将HABTM数据带到视图

时间:2016-03-20 21:59:34

标签: ruby-on-rails ruby activerecord

我正在尝试为网站用户创建一个表,以查看每个人所在的组。我有一个Groups表和一个People表。现在我只想在视图中显示一个人的组。我将向您展示我的代码以便澄清。这是我的桌子。

<table class="table table-striped"> <thead> <tr> <th><%= sortable 'phone_number', 'Phone Number'%></th> <th><%= sortable 'subscribed', 'Subscribed State'%></th> <th><%= sortable 'groups' %></th> </tr> </thead> <tbody> <% @groups.each do |group| %> <% @people.each do |person| %> <tr> <td><%= person.phone_number %></td> <td><%= person.subscribed %></td> <td><%= group.name %></td> <% end %> <% end %> </tr> </tbody> </table>

现在,无论每个人是否属于每个群体,每个群体都会出现。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

使用

Dim i as integer
Dim c As WebObject
For i=0 To self.ControlCount-1 //Fixes mistake in original code.
    if self.ControlAtIndex(i) isa textFieldClass then
        c= textFieldClass(self.ControlAtIndex(i)) //Need to cast here
        if c.required then
            // do something here…
        end if
    End If
Next

而不是

group.people.each do |person|

遍历每个组中的所有用户。

答案 1 :(得分:1)

我需要确定您的群组和人物模型,但很可能您需要做的是循环person.groups。像这样:

<tbody>
    <% @people.each do |person| %>
    <tr>
      <td><%= person.phone_number %></td>
      <td><%= person.subscribed %></td>

      <% person.groups.each do |group| %>
          <td><%= group.name %></td>
      <% end %>

      <% end %>
    </tr>
  </tbody>

通过这种方式,您只需迭代属于个人groups的{​​{1}},而不是数据库中的所有person

请注意,如果您以这种方式格式化,除非每个人的组数相同,否则您的表行的长度将不同。