2012-07-23 95 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