第一条路线-您需要将产品定义为资源,因此您将有助手方法:
edit_product_path(@product)
,
new_product_path
等等:
# routes.rb
map.resource :products
然后是控制器-标准资源控制器:
# products_controller.rb
def edit
@product = Product.find(params[:id])
end
def update
@product = Product.find(params[:id])
if @product.update_attributes(params[:product])
flash[:notice] = "Product updated"
redirect_to @product
else
render :edit
end
end
现在查看-使用起来更容易
form_for
为特定对象(新的或现有的)生成窗体。对于新对象,它默认指向
#create
此资源和现有点的控制器上的操作
#update
. 如果需要,可以始终覆盖此路径:
# products/new.html.erb
<% form_for @product do |f| %>
<%= f.select :product_category, Category.all, {}, {:onchange => "this.form.submit();" %>
<% end %>