2

私はこの単純な構造を持っています:

<% if !@user.address.empty? && !@user.zip.empty? %>
   <%= @user.address+', '+@user.zip%>
<% end %>

addresszip記入されていればOKです。しかし、そうでない場合、ローカルホストでは中央の行が出力されません。それも大丈夫です。

しかし、Heroku では、addresszipが入力されていない場合、エラーが発生します。

ActionView::Template::Error (undefined method `empty?' for nil:NilClass):

そんなことがあるものか?注:データ型はaddressです。zipvarchar(255)

編集:重要なメモを追加するのを忘れていました: @useris NEVER nilです。

4

3 に答える 3

5

使ってみてpresent?

表面下には、空の文字列と、 およびをテストするものがpresent?あります。!blank?nil{}[]

あなたの場合:

<% if @user.address.present? && @user.zip.present? %>
  <%= "#@user.address, #@user.zip" %>
<% end %>
于 2013-01-03T14:24:41.330 に答える
3

on , , , ""empty?のみ使用できますが、 on は使用できません。[]{}""nil

blank?代わりに使用してください:

!@user.address.blank? && !@user.zip.blank?

肯定的に使用するにはpresent?

@user.address.present? && @user.zip.present?
于 2013-01-03T14:20:06.527 に答える
1

ローカル データベースでは、これらの値は null ではなく、実際には空の文字列である可能性があります。しかし、Heroku 内でアドレスなしで値を取得すると、null 値が取得されます。

Rails を使用している場合は、blank?which をチェックする nil も使用できます。

アクティブなサポートの一部であることに注意blank?してください。present?

于 2013-01-03T14:22:59.270 に答える