В стандартном контроллере Rails я бы создал такую запись:
@user = User.new(params[:user])
Это предполагает, что входящие в него параметры формы вложены.
Я играл с Backbone.js, и я заметил, что по умолчанию Backbone не устанавливает параметры так, как может выглядеть обычная форма Rails, что на самом деле я ожидал. Поэтому мне интересно, что я должен делать...
Я
рассчитывать на стороне сервера, если это запрос от Backbone, глядя на принимающие заголовки и т.д. и сам манипулировать параметрами, поэтому я могу сохранить небольшой код контроллера:
do_some_params_manipulation_with(params)
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html {redirect_to users_url}
format.json {render :json => @user.to_json }
end
end
Или, я создаю экземпляр объекта в каждой ветке, который заканчивается повторным кодом, но может быть более удобным для обслуживания в конечном итоге....
respond_to do |format|
format.html do
@user = User.new(params[:user])
if @user.save
redirect_to users_url
end
end
format.json do
@user = User.new(params) # and rely on mass-assignment protection
if @user.save
render :json => @user.to_json
end
end
end
или я могу изменить мои модели Backbone.js, переопределив метод .toJSON(который я не совсем уверен, как это сделать, потому что я еще недостаточно знаю о Backbone.js), так что он вставляет params?
В этой ситуации у меня есть доступ к обеим сторонам приложения, но меня интересует то, что делают другие.