Rails:我们如何检测在CRUD控制器中更新了哪些参数

问题描述

|| 我只是想知道:如何识别经典CRUD控制器中正在更新的参数? 我想根据要更改的参数重定向到其他路径。 例如,如果我有一个具有3个属性
id
name
firstname
Person
在我的控制器中:
def update
  @person = Person.find(params[:id])

  respond_to do |format|
    if @person.update_attributes(params[:person])
      #...
    else
      #...
    end
  end
end
如何检测
name
被更改,而不是
firstname
像“ 7”字样可以工作吗? 谢谢你的帮助!     

解决方法

这样您就可以像您说的那样检查参数。像
if !params.[:name].nil? ...
要么 您可以使用
_changed?
方法
@person.attributes = params[:person]
if @person.name_changed?
  next_path = name_changed_path
else
 ...
end
@person.save
redirect_to next_path