0

だから、どの画像を表示するかの条件文を設定しようとしています

これは私のホーム/インデックスビューファイルのセクションです

<% if @cloth.gender == "Female" && @cloth.size == "2T-3T" || "4T-5T" %>

これにより、ブラウザーにエラーが返されます。

undefined method `gender' for #<Array:0x4d2c578>

ホームコントローラーを次のように設定しました。

def index
  @cloth = Cloth.all
end

したがって、すべての「布」にアクセスできるはずですが、そうではありません。Rails コンソールに入ると、cloth.gender にアクセスできます。ここで何をすべきかわからない...

コード全体はhttps://github.com/yahtaa/oslrで入手可能

4

3 に答える 3

4

これを行うより良い方法はeach、@cloths でメソッドを使用することです。

<% @cloths.each do |cloth| %<
  <% if cloth.gender == "Female" && cloth.size == "2T-3T" || "4T-5T" %>
....

@cloths と言ったことに注意してください...おそらくインデックス定義をに変更する必要があり@cloths = Cloth.allます(コードがもう少し明確になるように)。

編集

コメントと codeit の回答に示されているように、最初に書いた条件には問題があります。別の書き方は、

<% if cloth.gender == "Female" && (cloth.size == "2T-3T" || cloth.size == "4T-5T") %>

この問題を特定してくれた codeit に感謝します。

于 2013-04-11T14:01:29.610 に答える
3

これを試して:

 @cloths.each do |cloth|
   if cloth.gender == "Female" && ["2T-3T", "4T-5T"].include?(cloth.size)
      #Or use  `if cloth.gender == "Female" && (cloth.size == "2T-3T" || cloth.szie == "4T-5T")`
   ..
 end

(cloth.size == "2T-3T" || "4T-5T")cloth.size値がの場合、 false を返します4T-5T"2T-3T" || "4T-5T"いつもだから2T-3T

于 2013-04-11T14:29:03.450 に答える