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对象的属性.
在进行ph.results时,它会返回一个ActiveRecord Relation而不是一条记录,因此您无法在其上调用方法ID.您需要使用一些逻辑从此关系中选择单个结果记录.
如果要显示结果的所有ID,则必须遍历所有结果,然后单独显示它们,如下所示:
- @phonecalls.each do |ph|
- ph.results.each do |r|
= r.id
Run Code Online (Sandbox Code Playgroud)