Mis*_*hko 1 ruby-on-rails form-for ruby-on-rails-3
在views/products/edit.html.erb我使用:
<%= form_for(:product, :url => {:action => 'update', :id => @product.id}) do |f| %>
Run Code Online (Sandbox Code Playgroud)
产生:
<form method="post" action="/aircons/8" accept-charset="UTF-8">
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
The action '8' could not be found for ProductsController
Run Code Online (Sandbox Code Playgroud)
尝试更新产品时id=8.
我认为表格的方法应该是put.是对的吗 ?我该怎么解决这个问题?
一些控制器代码:
def edit
@product = Product.find(params[:id])
end
def update
update_params_with_new_values(params)
@product = Product.find(params[:id])
if @product.update_attributes(params[:product])
flash[:notice] = "Product updated successfully."
redirect_to(:product => 'index')
else
render('edit')
end
end
def update_params_with_new_values(params)
params[:product][:shop_id] = Shop.create(:name => params[:new_shop]).id if params[:product][:shop_id] == "new_shop"
params[:product][:brand_id] = Brand.create(:name => params[:new_brand]).id if params[:product][:brand_id] == "new_brand"
end
Run Code Online (Sandbox Code Playgroud)
routes.rb 仅包含以下两行:
root :to => "products#index"
resources :products
Run Code Online (Sandbox Code Playgroud)
你为什么不用它:
<%= form_for @product do |f| %>
Run Code Online (Sandbox Code Playgroud)
?
如果它不起作用,请添加您的路线以提问.
| 归档时间: |
|
| 查看次数: |
4727 次 |
| 最近记录: |