使用has_many关系访问属性

时间:2013-08-03 00:20:00

标签: ruby-on-rails

我有一个看起来像这样的控制器:

class EventController < ApplicationController
  def index
    ...
    @events = Event.where(['eventdate < ?', DateTime.now]).order("eventdate")
    ...
  end
end

我的模型定义了以下关系:

class Event < ActiveRecord::Base
  ...  
  has_many :match_items, dependent: :destroy
  ...
end

我现在正尝试访问链接到我视图中实例变量@event中定义的事件的event_items,如下所示:

<h2>Your Events</h2>
<% @events.each do |event| %>​
  </br>​<span>​
    <%= event.eventdate.to_formatted_s(:rfc822) %> 
    <%= event.event_items.event_comment %>
​  </span>
<% end %>

event.event_items.event_comment行会引发错误:undefined method 'event_comment' for []:ActiveRecord::Relation

为什么我不能作为方法访问event_comment

如果我只使用event.event_items,则该行不会显示错误,并显示整个event_items数组,并在我的视图中显示所有内容。

所以我想也许我可以通过使用:

来访问event_comment作为数组的一部分
<%= event.event_items.event_comment[i] %> #where i is the index of event_comment in the array

但是这不会在我的显示中返回任何内容。

有关如何访问存储在event_comment db表中的属性event_items的任何建议?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您收到该错误的原因是event.event_items返回ActiveRecord::Relation而不是EventComment的实例。尝试使用:

event.event_items.first.event_comment