【问题标题】:Rails no method error for empty relationRails没有空关系的方法错误
【发布时间】:2013-09-20 01:45:28
【问题描述】:

我只是得到一个错误。

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

 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

【问题讨论】:

    标签: ruby-on-rails activerecord has-many belongs-to


    【解决方案1】:

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

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

    如果name.familyniltry 块将返回 nil,然后 erb 块将返回一个空字符串,基本上。

    否则,您需要弄清楚为什么循环中的names 之一没有family 并从那里开始。

    【讨论】:

    • 就是这样!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多