#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
У меня есть сайт, на котором есть участники, имеющие отношение has_one к своему профилю.
Я хочу отобразить некоторую информацию об их профиле участника на созданной мной панели администратора.
В консоли rails я могу получить доступ к информации с помощью:
member = Member.find(1)
member.profile.first_name
В моем контроллере
def index
@members = Member.all
end
В моем представлении администратора у меня есть
<% @members.each do |member| %>
<p><%= member.id %></p>
<p><%= member.profile.first_name %></p>
<% end %>
за исключением этого, возникает ошибка неопределенного метода
undefined method `first_name' for nil:NilClass
Как я могу получить доступ к информации профиля в моем представлении?
Ответ №1:
Я думаю, что у некоторых ваших участников нет связанного с ним профиля. Чтобы предотвратить ошибку, вы можете сделать что-то вроде этого:
<% @members.each do |member| %>
<p><%= member.id %></p>
<p><%= member.profile ? member.profile.first_name : "-" %></p>
<% end %>
Обновить:
Вам лучше включить profile
в сам контроллер, чтобы предотвратить проблему с N 1 запросом. Вы можете сделать это в контроллере:
def index
@members = Member.includes(:profile)
end