Итак, я играю с Райаном Бейтсом Simple_Form railscast , и при попытке отправить форму я получаю следующую ошибку:
NoMethodError in Products#index
Showing /home/panos/sites/store/app/views/products/index.html.erb where line #8 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #8):
5: <h2><%= link_to product.name, product %></h2>
6: <div>
7: Price: <%= number_to_currency product.price %><br />
8: Category: <%= product.category.name %><br />
9: <%= link_to "Edit", [:edit, product] %>
10: </div>
11: <% end %>
Rails.root: /home/panos/sites/store
Application Trace | Framework Trace | Full Trace
app/views/products/index.html.erb:8:in `block in _app_views_products_index_html_erb___762171406_75615480_549568821'
app/views/products/index.html.erb:4:in `each'
app/views/products/index.html.erb:4:in `_app_views_products_index_html_erb___762171406_75615480_549568821'
Вот мой файл index.html.erb:
<% title "Products" %>
<div class="product">
<% for product in @products %>
<h2><%= link_to product.name, product %></h2>
<div>
Price: <%= number_to_currency product.price %><br />
Category: <%= product.category.name %><br />
<%= link_to "Edit", [:edit, product] %>
</div>
<% end %>
</div>
<p><%= link_to "New Product", new_product_path %></p>
А вот мой файл form.html.erb:
<%= simple_form_for @product do |f| %>
<%= f.error_messages %>
<table border="1">
<tr>
<td><%= f.input :name %></td>
<td><%= f.input :price, :hint => "prices should be in USD" %></td>
<td><%= f.input :released_on %></td>
<td> <%= f.association :category, :include_blank => false %></td>
<td><%= f.input :rating, :collection => 1..5, :as => :radio %></td>
<td><%= f.input :discontinued %></td>
<td><%= f.button :submit %></td>
</tr>
<% end %>
Я знаю, что ошибка возникает из-за того, что поле Category было пустым (nill), но я не знаю, как это исправить, чтобы оно могло отображаться даже со значением nill.
Кто-нибудь может помочь?