0

У меня есть цикл, чтобы получить значение в моей базе данных, но когда я пытаюсь получить значение из отношений, я получаю сообщение об ошибке:Рубин на Rails: Получение значения из Отношения

undefined method `first_name' for nil:NilClass 

Это цикл:

<%= @sample.each do |s| %> 
    <%= s.relation.first_name %> 
<% end %> 

, когда я попытался

<%= s.relation.to_json %> 

с .to_json, я получаю это:

{"first_name":"testingtwo","last_name":"fdsaf","updated_at":"2013-11-21T07:47:05Z","user_id":null} 

Не должно быть s.relation.first_name Работает?

Благодаря

ответ

1

вполне возможно, что существует связь в цикле, что не имеют значение, и становится повесила там - попробовать это:

<%= @sample.each do |s| %> 
    <%= s.relation.first_name if s.relation %> 
<% end %> 

это только выходы s.relation.first_name если это не ноль. Вы также можете попробовать это:

<%= @sample.each do |s| %> 
    <%= s.relation.first_name || "No name given" %> 
<% end %> 

который помещает первое имя, если оно существует, или «Без названия не дано», если он не

+0

Спасибо! вот что это было! – hellomello

1

Одна важная вещь, которую вы можете рассмотреть вопрос о слишком ли или нет с nil значениями в вашей базе данных для этого конкретного отношения действительны для начала.

|| предложенное решение, безусловно, хороший и отличный шаблон рубин, но может быть стоит добавить в валидации ActiveRecord, чтобы обеспечить ваши relation (корабли) никогда не nil.

ActiveRecord Validations, безусловно, способ пойти в этом конкретном случае.

+0

Спасибо за подсказку! – hellomello

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