Rails:我们如何检测CRUD控制器中更新的参数

时间:2011-05-24 21:11:11

标签: ruby-on-rails ruby-on-rails-3

我只是想知道:如何识别经典CRUD控制器中正在更新的参数? 我想根据要更改的参数重定向到不同的路径。

例如,如果我的Person有3个属性id namefirstname

在我的控制器中:

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?之类的东西会起作用吗?

感谢您的帮助!

1 个答案:

答案 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