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)

然后我去了狗的记录的展示视图,我想要一个可以显示 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 回答