1

いくつかのモデルを持つ単純な Rails 3 アプリケーションがあります。私が問題を抱えているモデルの簡単な概要は次のとおりです。

クライアント モデル

has_many :animals

動物モデル

belongs_to :client

私ができることは、同じクライアントが所有する他の動物のリストを表示することです。

このようなもの:

<% @client.animals.each do |animal| %>
  <%= animal.AnimalName %>
<% end %>

これは Animal コントローラー内にあるため、サンプル コードは機能しません。任意のポインタをいただければ幸いです。

アップデート

明確にするために、次の記録がある場合:

Danny (Client)
Cat (animal owned by Danny)
Dog (animal owned by Danny)
Rabbit (animal owned by Danny)

次に、犬の記録のショー ビューに移動しました。ダニーが所有するすべての動物を表示するリストが必要です。例えば

Cat
Dog
Rabbit

理想的には、現在表示されている動物 (この場合は犬) を除外します。

私は次のことを試しましたが、うまくいかないようです:

<% @client.animals.each do |client| %>
  <%= @client.animal.AnimalName %>
<% end %>
4

1 に答える 1

2

私があなたを正しく理解しているなら、あなたは@animalの所有者が所有するすべての動物を見せたいと思ってい@animalます。これは次のように実行できます。

<% @animal.client.animals.each do |animal| %>
  <%= animal.AnimalName %>
<% end %>

アップデート:

あなたはただに追加することができ.whereます@animal.client.animals

@animal.client.animals.where('id != ?', @animal.id).each ...

ビューでこれを行うのはあまり良い考えではありません。したがって、Animalモデルにインスタンスメソッドを追加します。

def other_animals_with_same_owner
  client.animals.where('id != ?', id)
end

これであなたはすることができます:

@animal.other_animals_with_same_owner.each ...
于 2012-04-25T14:15:39.250 に答える