Ruby - 为什么这个结构返回nil?

use*_*621 2 ruby string null ruby-on-rails heroku

我有这个简单的结构:

<% if !@user.address.empty? && !@user.zip.empty? %>
   <%= @user.address+', '+@user.zip%>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如果是addresszip填写,那没关系.但如果没有,在localhost上不会打印出中间行.那也没问题.

但在Heroku上,如果addresszip没有填写,我得到的错误

ActionView::Template::Error (undefined method `empty?' for nil:NilClass):
Run Code Online (Sandbox Code Playgroud)

怎么可能?注意:addresszip具有数据类型varchar(255).

编辑:我忘了添加一个重要的注意事项:@userNEVER nil.

Leo*_*rea 5

尝试使用 present?

在表面上present?只是!blank?将测试空字符串以及为nil,{}[].

在你的情况下:

<% if @user.address.present? && @user.zip.present? %>
  <%= "#@user.address, #@user.zip" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)