Ruby on Rails:从关系中获取价值

时间:2013-12-07 11:09:58

标签: ruby-on-rails ruby json ruby-on-rails-3 ruby-on-rails-3.2

我有一个循环来获取数据库中的值,但是当我试图从关系中获取值时,我收到错误:

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不应该有用吗?

由于

2 个答案:

答案 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 绝对是特定情况下的方法。