#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
Мне просто интересно: как я могу определить, какие параметры обновляются в классическом CRUD controller? Я хотел бы перенаправить на другой путь в зависимости от того, какие параметры изменяются.
Например, если у меня есть 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?
работы?
Спасибо за вашу помощь!
Ответ №1:
итак, вы могли бы проверить параметры, как вы сказали. Что-то вроде 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
Комментарии:
1.
_changed?
круто, убедитесь, что вы сначала установили атрибуты для объекта, как это сделал здесь Джесси с помощью@person.attributes = params[:person]
или путем вызоваupdate_attributes
, как в вопросе Лукаса first.