Rails按钮更新属性不起作用

时间:2012-07-23 01:10:16

标签: ruby-on-rails ruby-on-rails-3

我在对象的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

1 个答案:

答案 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 %>