我有一个循环来获取数据库中的值,但是当我试图从关系中获取值时,我收到错误:
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
不应该有用吗?
由于
答案 0 :(得分: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 %>
如果它存在则放置名字,如果不存在则放置“No name given”
答案 1 :(得分:1)
您可能还需要考虑的一件重要事情是,数据库中针对该特定关系的nil
值是否有效。
提出的||
解决方案绝对是一个很好的Ruby模式,但可能值得在ActiveRecord验证中添加,以确保relation
(船只)永远不会nil
ActiveRecord Validations 绝对是特定情况下的方法。