0

:names と :rat1 の 2 つのモデルがあります。それぞれの名前は、rat1 で評価されている場合とされていない場合があります。存在するすべての評価を表示し、存在しない評価には N/A を表示できるようにしたいと考えています。

ルート.rb

resources :names do
  resource :rat1
end

名前.rb

has_one :rat1

ラット1.rb

belongs_to :names

現在、html テーブルを javascript テーブルにエクスポートできる xml ブロッ​​クに変換しようとしています。これと同等のことをしたい。

<%= @name.rat1.rating || 'N/A' %>

しかし、私がしようとすると

xml.tag!("cell", @name.rat1.rating || 'N/A')

うまくいきません。nil の場合、nil クラス エラーをスローして失敗します。

4

2 に答える 2

1

これを試すことができます。括弧がないために評価がうまくいかない可能性があります。

 xml.tag!("cell", (@name.rat1.rating || 'N/A'))

編集:

次のことができます。

xml.tag!(cell, (@name.rat1.rating.present? then @name.rat1.rating else "N/A" end ))

数行のコードを節約できます。

<%= if @name.rat1.rating.present? then @name.rat1.rating else "N/A" end %>

まず、@ name.rat1.ratingが存在するかどうかを確認し、存在する場合は@name.rat1.ratingをレンダリングします。あなたはすでにそれを現在までチェックしているので、それはゼロになることはできませんか?方法。@ name.rat1.ratingが存在しない場合は、else条件に従い、「N/A」を返します。

于 2013-02-06T16:00:08.660 に答える
0

したがって、私の解決策は次のようになりました。names_helper.rb にヘルパー メソッドを作成しました

def show_rating(rating)
  if rating.present?
     rating.rating
  else
     "N/A"
  end
end

そして、xmlでそれをフィードする方法は

xml.tag!("cell", show_rating(name.rat1))

このようにして、.rating 値を取得する前に、rat1 モデルの現在を確認します。

ご協力いただきありがとうございます!

于 2013-02-06T18:14:47.487 に答える