Har*_*M V 0 ruby ruby-on-rails
我有这个功能
application_helper.rb
def nl2br(s)
s.gsub(/\n/, '<br/>')
end
Run Code Online (Sandbox Code Playgroud)
视图
<%= nl2br(@event.rules).html_safe %>
Run Code Online (Sandbox Code Playgroud)
错误:
nil:NilClass的未定义方法'gsub'
有时内容可以是nil这样,最好的处理方式是什么?
当我添加unless s.nil?函数时,我得到了html_safe undefined method error。
(2019年更新)
使用现代Ruby(2.3+),您可以使用安全的导航操作符:
def nl2br(s)
s&.gsub(/\n/, '<br/>')
end
Run Code Online (Sandbox Code Playgroud)
如果s为nil,s&.gsub将退回到nil,然后将其输出为空字符串。
(2015年的原始答案)
简单的技巧,只需使用OR即可设置默认值:
def nl2br(s)
(s||'').gsub(/\n/, '<br/>')
end
Run Code Online (Sandbox Code Playgroud)
或者,由于nil.to_s求值为空字符串,因此您可以执行以下操作:
def nl2br(s)
s.to_s.gsub(/\n/, '<br/>')
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1027 次 |
| 最近记录: |