如何在视图中显示关联值?

时间:2012-12-06 23:06:49

标签: ruby ruby-on-rails-3 activerecord

我有公司课程:

class Company < ActiveRecord::Base
    validates :name, :presence => true
    has_many :employees
end

以及员工只能与一家公司关联的员工类:

class Employee < ActiveRecord::Base
    validates :lastName, :presence => true
    belongs_to :company
    validates :company, :presence => true
end

当我列出员工时,

<% @employees.each do |employee| %>
  <tr>
    <td><%= employee.firstName %></td>      <- works
    <td><%= employee.lastName %></td>       <- works
    <td><%= employee.company.name  %></td>  <- Get an 'undefined method `name' for nil:NilClass' error
  </tr>
<% end %>

我认为员工公司急需加载,因此我可以直接在对象中访问关联,或者我的语法错误了?

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

我可以想到两种情况:

  1. company_id = NULL

  2. company_id = ID但是具有此ID的公司不再存在。

  3. 在任何情况下,在控制台中检查违规对象都是微不足道的:Employee.reject(&:company)

答案 1 :(得分:0)

由于员工属于公司,您应该从公司本身加载员工。类似的东西:

class EmployeeController < ApplicationController

  def index
    @employees = @company.employees
    ...
  end
  ...
end