Rails:通过关联显示has_many上的所有相关记录

时间:2014-04-25 18:12:15

标签: ruby-on-rails associations has-many-through

我正在建立一个访客列表应用程序,我已经定义了访客(名称)和列表模型 - 访客可以有很多列表,列表可以有很多访客。两者都通过关联在has_many中关联(在阅读HABTM关联不是一个好主意之后)。

以下是我的模特:

class Guest < ActiveRecord::Base
    has_many :lists, through: :checklists
end

class List < ActiveRecord::Base
    has_many :guests, through: :checklists
end

class Checklist < ActiveRecord::Base
    belongs_to :list
    belongs_to :guest
end

编辑 - 我列出了show的控制器:

  def show
    @list = List.find(params[:id])
  end

在List show视图中,我想通过清单表显示与该列表关联的所有客户名称。我可以弄清楚我是否需​​要一个do循环或一个数组......这有点超出了我目前的技能。

我尝试过以下内容:

<%= @list.checklist.guest.name %>

我在这里明显缺少一些关键的代码和概念。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要迭代这样的客人:

<% @list.guests.each do |guest| %> # For each guest in list.guests
  <%= guest.name %> # print guest.name
<% end %>

答案 1 :(得分:1)

它应该是这样的

<% @list.guests.each do |guest| %>
  <%= guest.name %>
<% end %>