我只是想知道:如何识别经典CRUD控制器中正在更新的参数? 我想根据要更改的参数重定向到不同的路径。
例如,如果我的Person
有3个属性id
name
和firstname
在我的控制器中:
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?
之类的东西会起作用吗?
感谢您的帮助!
答案 0 :(得分:4)
所以你可以像你说的那样查看params。像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