Я пытаюсь создать простое приложение для работы с продуктами, чтобы научить себя Rails. Для каждого продукта может быть несколько записей журнала невыполненных работ, поэтому я хочу создать представление продукта, которое отображает информацию о продукте, все записи журнала невыполненных работ для продукта и включает вложенную форму для добавления дополнительных записей журнала невыполненных работ.
Все работает, пока я не попытаюсь добавить форму в представление, что приведет к следующей ошибке:
NoMethodError in Products#show
Showing app/views/products/show.html.erb where line #29 raised:
undefined method `pblog_ref' for #<Product:0x10423ba68>
Extracted source (around line #29):
26: <%= f.error_messages %>
27: <p>
28: <%= f.label :pblog_ref %><br />
29: <%= f.text_field :pblog_ref %>
30: </p>
31: <p>
32: <%= f.label :product %><br />
Представление продукта, в котором сообщается о проблеме, выглядит следующим образом (частично работает нормально, поэтому я не буду включать этот код):
<h1>Showing product</h1>
<p>
<b>Product ref:</b>
<%=h @product.product_ref %>
</p>
<p>
<b>Description:</b>
<%=h @product.description %>
</p>
<p>
<b>Owner:</b>
<%=h @product.owner %>
</p>
<p>
<b>Status:</b>
<%=h @product.status %>
</p>
<h2>Product backlog</h2>
<div id="product-backlog">
<%= render :partial => @product.product_backlogs %>
</div>
<% form_for(@product, ProductBacklog.new) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :pblog_ref %><br />
<%= f.text_field :pblog_ref %>
</p>
<p>
<%= f.label :product %><br />
<%= f.text_field :product %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_field :description %>
</p>
<p>
<%= f.label :owner %><br />
<%= f.text_field :owner %>
</p>
<p>
<%= f.label :status %><br />
<%= f.text_field :status %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Edit', edit_product_path(@product) %> |
<%= link_to 'Back', products_path %>
Это модель продукта:
class Product < ActiveRecord::Base
validates_presence_of :product_ref, :description, :owner
has_many :product_backlogs
end
Это модель ProductBacklog:
class ProductBacklog < ActiveRecord::Base
belongs_to :product
end
Это маршруты:
map.resources :product_backlogs
map.resources :products, :has_many => :product_backlogs
Все схемы существуют в схеме для этой модели:
create_table "product_backlogs", :force => true do |t|
t.string "pblog_ref"
t.integer "product_id"
t.string "description"
t.string "owner"
t.string "status"
t.datetime "created_at"
t.datetime "updated_at"
end
Я проверил, что я делаю против Создание веб-блога за 15 минут с помощью Rails 2 screencast , и в принципе я, похоже, делаю то же самое, что и он, - только его вложенные формы комментариев работает, а мой нет!
Я надеюсь, что кто-то может помочь с этим, прежде чем я сойду с ума! Я уверен, что это что-то тривиальное.