Rails未定义方法`id'

Bor*_*nov 2 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有两个型号:

电话和结果:

class Phonecall < ActiveRecord::Base
  has_many :results
end

class Result < ActiveRecord::Base
  belongs_to :phonecall
end
Run Code Online (Sandbox Code Playgroud)

一切都很简单,如果我这样做:

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

  end

end
Run Code Online (Sandbox Code Playgroud)

在视野中:

<% @phonecalls.each do |ph| %>
  <%= ph.results.id %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我有一个错误:

undefined method `id' for #<ActiveRecord::Associations::CollectionProxy []>
Run Code Online (Sandbox Code Playgroud)

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

Man*_*eep 6

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

如果要显示结果的所有ID,则必须遍历所有结果,然后单独显示它们,如下所示:

- @phonecalls.each do |ph|
  - ph.results.each do |r|
    = r.id
Run Code Online (Sandbox Code Playgroud)