我在对象的show视图中有一个如下所示的链接:
<%= link_to "Approve", object_path(@object, status: true), method: :put, confirm: "Are you sure?", class: 'button' %>
控制器中的更新操作是标准的,对象的常规编辑表单工作正常。但由于某种原因,此链接未将布尔字段更新为true ...
这个链接有什么问题吗?
编辑:控制器的更新部分
def update
@object = Object.find_by_certain_field(params[:id])
if @object.update_attributes(params[:object])
flash[:success] = "Object Updated"
redirect_to @object
else
render 'edit'
end
end
答案 0 :(得分:2)
object_path(@object, status: true)
导致params[:status]
为真,而不是params[:object][:status]
,因此不会使用@object.update_attributes(params[:object])
更新对象
如果您想继续使用当前的代码模式,只需添加
parmas[:object] ||= {}
params[:object][:status] = params[:status] if params[:status]
之前
if @object.update_attributes(params[:object])
一切都应该没问题。
否则我会让你为这次更新电话制作表格:
<% form_for @object, :method => :put do |f| %>
<%= f.hidden_field :status, :value => true %>
<%= f.submit "Approve" %>
<% end %>