0

我只是得到一个错误。

我有很多关联,但是在填写表格时,我将字段留空,然后我返回了一个错误:

 Showing /home/techmago/namebook/app/views/names/index.html.erb where line #16 raised:

undefined method `nome' for nil:NilClass

Extracted source (around line #16):

13: <% @names.each do |name| %>
14:   <tr>
15:     <td><%= name.nome %></td>    
16:     <td><%= name.family.nome %></td>
17:     <td><%= name.race.nome %></td>
18:     <td><%= h(name.descr).gsub(/\n/, '<br/>').html_safe %></td>
19:     <td>

我确信这是因为 name.family.nome 之一是 nill。我希望这种情况可以接受

楷模:

class Name < ActiveRecord::Base
  belongs_to :family
  belongs_to :race
  has_and_belongs_to_many :books

  attr_accessible :descr, :family_id, :nome, :race_id, :book_ids

  validates :nome, presence: true
end

class Family < ActiveRecord::Base
  has_many :names
  has_and_belongs_to_many :books
  has_and_belongs_to_many :races

  attr_accessible :descr, :nome, :book_ids, :race_ids

  validates :nome, uniqueness: true, presence: true
end
4

1 回答 1

2

所以我们知道的是,name特别是,没有关联的family对象。也就是说,name.family正在返回nil,它不响应nome,如错误所示。因此,如果您要寻找的是可以优雅地处理...即在这种情况下不要出错并且不显示任何内容,您可以这样做:

<%= name.family.try(:nome) %>

如果是,该try块将返回,然后 erb 块将返回一个空字符串,基本上。nilname.familynil

否则,您需要弄清楚为什么name循环中的一个 s 没有 afamily并从那里开始。

于 2013-09-20T01:50:56.883 回答