1

我在对象的显示视图中有一个如下所示的链接:

<%= 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
4

1 回答 1

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 %>
于 2012-07-23T12:56:20.270 回答