2011-05-24 34 views
0

我只是想知道:如何識別哪些參數正在經典的CRUD控制器中更新? 我想重定向到不同的路徑,取決於哪些參數正在改變。Rails:我們如何檢測哪些參數在CRUD控制器中更新

舉例來說,如果我有一個Person有3個屬性idnamefirstname

在我的控制器:

def update 
    @person = Person.find(params[:id]) 

    respond_to do |format| 
    if @person.update_attributes(params[:person]) 
     #... 
    else 
     #... 
    end 
    end 
end 

我怎樣才能檢測到name正在改變,而不是firstname

會像!params[:name].nil?工作嗎?

感謝您的幫助!

回答

4

所以你可以像你說的那樣檢查參數。像if !params.[:name].nil? ...

OR

東西,你可以使用_changed?方法

@person.attributes = params[:person] 
if @person.name_changed? 
    next_path = name_changed_path 
else 
... 
end 
@person.save 
redirect_to next_path 
+0

謝謝,完美。 :) – Lucas 2011-05-24 21:17:23

+0

'_changed?'很酷,確保你先設置對象的屬性,就像Jesse在這裏用'@person.attributes = params [:person]'完成的那樣,或者像在Lucas的問題中一樣調用'update_attributes' 。 – ipd 2011-05-24 21:20:53

相關問題