2011-05-22 57 views
7

我只是想知道,我有一個模型,除了其他模型(FK)的ID,它有一個單一的屬性boolean。我想知道我怎麼可以創建一個按鈕,改變了這一boolean和只是Rails - 有沒有更新單個屬性的方法?

我的問題模型是這樣的一個:

class Squad 
belongs_to :player 
belongs_to :team 
end 

我想將team#show頁面所以player上創建一個按鈕,擁有此team可以更改booleansquad。我該怎麼做,看起來像我的控制器?

謝謝:)!

CNC中

我使用的鏈接是這樣的:

<%=link_to("Change status", squad_path(sqd, :status => true), :method => :put, :confirm => "Sure?")%> 

哪裏sqd是我的查詢的一部分。這個鏈接錯了嗎?

回答

12
<%= link_to("Change status", squad_path(sqd, "squad[status]" => true), :method => :put, :confirm => "Sure?") %> 
在控制器

(這是很常見的)

def update 
    @squad = Squad.find params[:id] 
    if @squad.update_attributes params[:squad] 
    ... 
    end 
end 
+0

謝謝!這是缺少的部分:) – Samth 2011-05-22 19:16:43

+0

.update_attributes [:班]不會工作! – 2011-05-22 20:19:44

+1

@Aditya Sanghi,是的,它只是一個錯誤的當然,這不是問題的答案 – fl00r 2011-05-22 20:23:08

0

屬性的名稱是什麼?

由於它屬於player,您可以通過player.squad.name_of_your_attributes = new_value訪問它。如果您想要將更改保存在您的數據庫中,請不要忘記save您的對象。

此外,您還可以閱讀that

編輯:fl00r回答了你的問題編輯,不需要我重複他寫道。

+0

感謝您的回答。我編輯了我的問題。你能否將鏈接鏈接改爲你提出的鏈接? :) – Samth 2011-05-22 19:09:43

3

是的。該方法被稱爲「update_attribute」。它有兩個參數,即字段名稱和值。

squad.update_attribute(:boolean_field,true) # or false 

基於更新的問題

def update 
    @squad = Squad.find(params[:id]) 
    if @squad.update_attribute(:status,params[:status]) 
    ... 
    end 
end 
+0

感謝您的答案:)。我試圖創建一個鏈接到它,但不工作,它更新頁面中的所有模型:/ 我有一個查詢來查找有問題的小隊,你認爲這是最好的方式或有其他我可以做的事情? – Samth 2011-05-22 19:00:36

相關問題