0

我正在尝试通过包含用户的表呈现一些信息,并且在该表中我想要一个名为 Company 的列(对于每个用户)。在 user.rb 中有一个名为 company_id 的列,这是公司模型和用户模型之间的链接。现在,这是 index.html.erb:

<% provide(:title, 'Non-developers') %>
<h1>Non - developers</h1>

<table class="pretty" border="1" cellpadding="10">  
  <tr>
    <th></th>
    <th><%= sortable "name" %></th>
    <th><%= sortable "email" %></th>
    <th><%= sortable "company_id" %></th>
    <th>DELETE</th>
  </tr>  

  <% for user in @users %>  
  <tr class="<%= cycle('oddrow', 'evenrow') -%>">
    <td><%= gravatar_for user %></td>
    <td><%= link_to user.name, user %></td>
    <td><%= user.email %></td>
    <% company = Company.where(:id => user.company_id) %>
    <td><%= company.name %></td>
    <td><% if current_user.admin? || ( ( current_user.developer? && !current_user?(user) ) && (user.boss_id == current_user.id) ) %>
      || <%= link_to "delete", user, method: :delete,
                              data: { confirm: "You sure?" } %>
        <% end %></td>
  </tr>
  <% end %>
</table>
<%= will_paginate @users %>

这部分

<% company = Company.where(:id => user.company_id) %>
<td><%= company.name %></td>

不起作用,总是返回“公司”字样。如何查看每个用户的实际公司名称?

4

2 回答 2

2

where返回公司的集合,而不是单个公司。尝试

<% company = Company.find(user.company_id) %>

或者更好:

<% company = user.company %>

这要求您在模型中有belongs_to :company关联。User

于 2013-09-02T08:48:23.997 回答
1

该语句Company.where(:id => user.company_id)将返回一个类型的对象,ActiveRecord::Relation并且这样的对象中可能有许多记录,因为它基本上是 SQL 查询的结果。您应该改用<td><%= user.company.name %></td>ifname是 的列或属性Company

希望有帮助!

于 2013-09-02T08:54:53.233 回答