我有以下控制器
class ProductController < ApplicationController
def show
id = params[:id]
@product = Product.find(id)
end
def update
render text:params
end
end
当我访问/product/1
时,我会显示一个包含产品1的详细信息的页面,以及更新它们的方法。我就是这么做的:
<%= form_for @product, url: {:action => :update} do |f| %>
<%= f.text_field "name" %></br>
<%= f.text_field "quantity" %></br>
<%= f.submit "Update" %>
<% end %>
当我点击更新时,它将呈现请求。
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"sRzyQ0nP2ycWwgaS9eu5vHcID1b+hIl5Vho3KfX3XuE=", "product"=>{"name"=>"Test Name", "quantity"=>"2"}, "commit"=>"Update", "action"=>"update", "controller"=>"product", "id"=>"1"}
我将修改我的update
方法以保存新属性,并将用户重定向回show
页面。
这就是我应该如何更新数据库对象吗?
发布于 2013-10-25 21:08:36
如果我理解你的问题,你必须:
def update
@product = Product.find(params[:id])
if @product.update_attributes(params[:product])
redirect_to @product, notice: 'Product was successfully updated.'
else
render action: 'show'
end
end
希望这能有所帮助!
编辑
Rails的方法不是show
操作来呈现表单,而是使用edit
操作。看看脚手架:rails g scaffold foo
,了解Rails是如何工作的。
但你想要的似乎是一个就地编辑。观看这铁路。
https://stackoverflow.com/questions/19598681
复制相似问题