2012-07-23 96 views
1

我有一个链接,看起来像这样的对象的显示视图:Rails的按钮来更新属性不工作

<%= link_to "Approve", object_path(@object, status: true), method: :put, confirm: "Are you sure?", class: 'button' %> 

控制器中的更新动作是标准和对象的定期编辑表单工作得很好。但由于某种原因,此链接不更新布尔字段为真...

有没有什么,我做错了这个链接?

编辑:控制器

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

发布的控制器代码可能的帮助。但是如果没有它,我会冒险猜测你正在更新操作中将布尔值字段设置为true。 – 2012-07-23 04:33:47

+0

我将控制器的代码添加到问题中。我只是使用'update_attributes'来设置发布的东西。有任何想法吗? – Justin 2012-07-23 12:54:41

回答

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]) 

和一切应该没问题。

否则,我avise大家做一个表格,此更新电话:

<% form_for @object, :method => :put do |f| %> 
    <%= f.hidden_field :status, :value => true %> 
    <%= f.submit "Approve" %> 
<% end %> 
+0

我试过把它和它仍然没有工作:'<%= form_for @object,方法:: put do | f | %><%= f.hidden_​​field:status,value:true%><%= f.submit“Approve”%><% end %>' – Justin 2012-07-23 15:00:19

+0

而在源代码中,它有''以及

' – Justin 2012-07-23 15:02:22

+0

你能否在这里粘贴收到这个请求的rails服务器的日志?另请加!在update_attributes方法中,如: 'if @ object.update_attributes!(params [:object])'。这样,如果由于验证而未保存对象,则会引发错误并将其记入日志。 – 2012-07-23 15:10:05