我有两种模式:
电话和结果:
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对象的属性。
答案 0 :(得分:6)
当您正在进行ph.results 时,它会返回一个ActiveRecord关系,而不是单个记录,因此您无法在其上调用方法ID。 您需要使用一些逻辑从这种关系中选择一个结果记录。
如果你想 显示所有结果ID,那么你必须遍历所有结果 ,然后单独显示它们:
- @phonecalls.each do |ph|
- ph.results.each do |r|
= r.id