2013-09-20 2 views
0

Я просто получаю сообщение об ошибке.Rails ошибка метода для пустого отношения

я получил много assotiations, но при заполнении формы, я оставить это поле пустым, и л возвращается мне ошибку:

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 - ниль. Я хотел бы, что эта ситуация может быть принята

Модели:

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 

ответ

2

Так что мы знаем, что это name, в частности, не имеет соответствующего family объекта. То есть name.family возвращает nil, который не отвечает на nome, как указано ошибкой. Таким образом, если то, что вы ищете, что это будет обрабатываться корректно ... т.е. не ошибка и ничего не показывает в этом случае, вы можете сделать это:

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

try блока вернется nil, если name.family - nil, а затем блок erb вернет пустую строку, в основном.

В противном случае вам нужно выяснить, почему один из name s в цикле не имеет family и идет оттуда.

+0

Был именно это! спасибо! – Techmago

+0

сайт говорит, что мне нужно 3 минуты, чтобы принять ответ;) – Techmago

Смежные вопросы