Ruby on rails ActiveRecord::RecordNotFound-没有ID的产品
我正在尝试在我的应用程序中创建评论,但在控制器中执行以下操作时:Ruby on rails ActiveRecord::RecordNotFound-没有ID的产品,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我正在尝试在我的应用程序中创建评论,但在控制器中执行以下操作时: def create @product = Product.find(params[:product_id]) @review = @product.reviews.create(params[:review]) redirect_to product_path(product) end 我得到无法找到没有ID的产品。我填写了表格,当它执行下面的一行时,它似乎找不到该产品。@product=produ
def create
@product = Product.find(params[:product_id])
@review = @product.reviews.create(params[:review])
redirect_to product_path(product)
end
我得到无法找到没有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 %>
将您的表格更改为
form_for [@product, @product.reviews.build] do |f|
这会将操作更改为/products/@product.id/reviews
以匹配嵌套路线您可以发布参数吗?我相信你的params
方法没有:product\u id键。我以前尝试过这个,并将我的表单设置为如下:
但是得到了未定义的局部变量或方法“product”
,它指向我的review\u控制器的创建方法。我相信问题在于我的review\u控制器中有它是否表示产品未定义?是否重试?您的问题是params[:product\u id]
为零,因此引发了一个异常,即在没有id的情况下找不到产品。我假设,由于您处于产品的显示操作中,@product
已经是一个持久化对象,因此这将解决您的问题。如果在尝试此解决方案时遇到不同的错误,请将该错误添加到问题中。我忘了提到控制器代码在查看\u controller
中。是的,我再试了一次,我知道。该表单应转到reviews控制器的创建操作。