我试图通过包含用户的表格呈现一些信息,在该表格中我想要一个名为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>
不起作用并始终返回“公司”字样。如何查看每个用户的实际公司名称?
答案 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
。
希望有所帮助!