表中的Rails 3语句不起作用

时间:2013-09-02 08:46:05

标签: ruby-on-rails ruby-on-rails-3.2 html-table where

我试图通过包含用户的表格呈现一些信息,在该表格中我想要一个名为Company的列(对于每个用户)。在user.rb中有一个名为company_id的列,这是Company模型和User模型之间的链接。现在,这是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>

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

2 个答案:

答案 0 :(得分:2)

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

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

或者更好:

<% company = user.company %>

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

答案 1 :(得分:1)

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

希望有所帮助!