0

アプリでレビューを作成しようとしていますが、コントローラーで次のことを行っている場合:

def create
    @product = Product.find(params[:product_id])
    @review = @product.reviews.create(params[:review])

   redirect_to product_path(product)
  end

取得しCouldn't find Product without an IDます。フォームに記入しますが、次の行@product = Product.find(params[:product_id])を実行すると、製品が見つからないように見える場合があります。

ルート

 resources :products do
    resource :reviews
  end

products / show.html.erb

 <%= form_for(@product.reviews.build) do |f| %>
   <div class="field">
     <%= f.label :title %>
     <br/>
     <%= f.text_field :title %>
   </div>
   <div class="field">
     <%= f.label :author %>
     <br/>
     <%= f.text_field :author %>
   </div>
   <div class="field">
     <%= f.label :content %>
     <br/>
     <%= f.text_area :content %>
   </div>
   <div class="field">
     <%= f.label :rating %>
     <br/>
     <%= f.number_field :rating %>
   </div
   <div class="actions">
     <%= f.submit %>
   </div>
  <% end %>
4

1 に答える 1

-1

form_forをに変更します

form_for [@product, @product.reviews.build] do |f|

/products/@product.id/reviewsこれにより、ネストされたルートに一致するようにアクションが変更されます

于 2013-03-13T03:26:42.480 に答える