2013-08-03 2 views
0

У меня есть контроллер, который выглядит примерно так:атрибутов доступа, используя has_many отношения

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_items связанному с события, определенные в переменной экземпляра @event, на мой взгляд, следующие:

<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, хранящемуся в моей таблице event_items db? Любая помощь очень ценится!

+0

Как определяется event_items? – Fred

ответ

1

Причина, по которой вы получаете эту ошибку, потому что event.event_items возвращает ActiveRecord::Relation, а не экземпляр EventComment. Попытайтесь использовать:

event.event_items.first.event_comment 
+0

Спасибо! Это сделал трюк. – Tobi

+0

@Tobi, Добро пожаловать. – vee

Смежные вопросы