未定义的方法 - 多个belongs_to关联

时间:2014-03-18 21:24:47

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 relationship

我正在尝试创建一个显示多个一对多关联的视图。在我的应用程序中,每个“检查”都分配给一个“客户”和“代理”。我建立了自己的人际关系。代理正在返回,但客户端返回一个未定义的方法nil:nilClass为“name”。

# inspections_controller.rb

    def new
        @inspection = Inspection.new
        @agents = Agent.all
        @clients = Client.all

        respond_to do |format|
            format.html # new.html.erb
            format.json { render json: @inspection }
        end
    end 

# inspection.rb (model)

    belongs_to :agent
    belongs_to :client

# agent.rb (model)

    has_many :inspections

# client.rb (model)

    has_many :inspections

# index.html.erb (inspections view)

    <td><%= inspection.agent.name %></td> # works
    <td><%= inspection.client.name %></td> # returns undefined method `name'

我在这里不知所措,因为关联和表格设置完全相同。我能够很快回复<%= inspection.client_id %>

1 个答案:

答案 0 :(得分:0)

对于具有client_id的检查记录,您可能没有相应的客户端。也许你在某个时候手动删除了一个客户端?检查您的数据,并在您的代码中添加检查,以确保您不会抛出错误,因此这样的事情可能有所帮助

 <td><%= inspection.client.name unless inspection.client.blank?%></td> # returns undefined method `name'

至少通过这种方式,您可以直观地了解哪些检查没有相应的客户,让您更容易调查原因