0

カテゴリと製品があり、カテゴリには多くの製品があります。カテゴリを編集、削除、作成できます。また、カテゴリごとに製品を作成、削除することもできますが、各製品を編集したいと考えています。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| %>
4

1 に答える 1

0

次の行は配列を作成すると思います
@product=Product.where(params [:id])

これはform_helperでは使用できませんでした(一般的にActiveRecordリレーションによって提供されるモデル名を想定しています)。@ productを調べて、結果を確認できます。

だから、好きな場所の代わりに検索を使用する方が良いです

@product = Product.find(params [:id])

この回答がお役に立てば幸いです。
ありがとう。

于 2012-05-02T09:28:26.050 に答える