カテゴリと製品があり、カテゴリには多くの製品があります。カテゴリを編集、削除、作成できます。また、カテゴリごとに製品を作成、削除することもできますが、各製品を編集したいと考えています。link_to を使用して特定のカテゴリの単一の製品にアクセスでき、製品コントローラは特定のカテゴリの製品を受信しています。
そのカテゴリのすべての製品が属するカテゴリのhtmlには、
<%= link_to 'Edit', edit_category_product_path(product.category, product) %>
製品のコントローラー、編集機能は
@product = Product.where(params[:id])
それから私の編集htmlは
<%= form_for @product do |f| %>
<% if @product.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2>
<ul>
<% @product.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.label :price %><br />
<%= f.text_field :price %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', category_products_path %>
製品を編集しようとすると、このエラーが発生します
NoMethodError in Products#edit
Showing C:/Sites/propoolpro6/app/views/products/edit.html.erb where line #3 raised:
undefined method `model_name' for ActiveRecord::Relation:Class
Extracted source (around line #3):
1: <h1>Editing product</h1>
2:
3: <%= form_for @product do |f| %>
4: <% if @product.errors.any? %>
5: <div id="error_explanation">
6: <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2>
Rails.root: C:/Sites/propoolpro6
Application Trace | Framework Trace | Full Trace
app/views/products/edit.html.erb:3:in `_app_views_products_edit_html_erb___584392485_32651052'
Request
Parameters:
{"category_id"=>"1",
"id"=>"3"}
注:私はこの2を使用しましたが、同じエラー、
<%= form_for(@product) do |f| %>