2016-02-23 5 views
0

У меня проблемы с пониманием Active Record Association. У меня есть следующийRails Понимание ассоциации активных записей

<%= feed_item.spot.inspect %> 

, который дает мне следующий вывод

#<Spot id: 18, name: "XX", city: "XX", created_at: "2016-02-22 22:30:00", updated_at: "2016-02-22 22:30:00"> 

EDIT:

Я хочу, чтобы получить имя (XX) пятна?

<%= feed_item.spot.name %> 

, похоже, не работает. Что мне делать?

+0

Ответ уже указан здесь http://stackoverflow.com/questions/8899624/accessing-parent-object-attribute-from-childs-object-in-rails – Bastien

ответ

3

Вы получаете эту ошибку, так как spot - nil. Если вашему spot разрешено быть nil, вы должны проверить значение ранее.

<%= feed_item.spot.name if feed_item.spot.present? %> 

Если не позволено быть nil добавить наличие валидатор к вашему feed_item модели.

class YourModel < ActiveRecord::Base 
    validates_presence_of :spot_id 
end 

При том, что вы можете быть уверены, что spot никогда в свежей базе данных nil.

+0

Зачем я получаю это: # <Идентификатор места: 18, имя: «XX», город: «XX», created_at: «2016-02-22 22:30:00», updated_at: «2016-02-22 22:30:00»> если пятно нуль? Именно поэтому я смущен. Должен ли я не получать «ноль», когда я это вижу. – Bastien

+0

Добавьте '<% = p feed_name.spot%>' прямо перед '<% = feed_item.spot.name%>' в своем представлении и посмотрите, что показывает консоль. Он должен возвращать 'nil'. – Tobias

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