Rails undefined方法`id'

时间:2014-10-05 19:30:40

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

我有两种模式:

电话和结果:

class Phonecall < ActiveRecord::Base
  has_many :results
end

class Result < ActiveRecord::Base
  belongs_to :phonecall
end

如果我执行此代码,一切都很简单:

class CallsController < ApplicationController
  def index
    @phonecalls = Phonecall.order('datetime DESC').all

  end

end

并在视野中:

<% @phonecalls.each do |ph| %>
  <%= ph.results.id %>
<% end %>

我有一个错误:

undefined method `id' for #<ActiveRecord::Associations::CollectionProxy []>

我做错了什么?我尝试获取与我的Phonecall对象相关的Result对象的属性。

1 个答案:

答案 0 :(得分:6)

当您正在进行ph.results 时,它会返回一个ActiveRecord关系,而不是单个记录,因此您无法在其上调用方法ID。 您需要使用一些逻辑从这种关系中选择一个结果记录。

如果你想 显示所有结果ID,那么你必须遍历所有结果 ,然后单独显示它们:

- @phonecalls.each do |ph|
  - ph.results.each do |r|
    = r.id