在标准的Rails控制器中,我创建了一个这样的记录:
@user = User.new(params[:user])
Run Code Online (Sandbox Code Playgroud)
这假设嵌套的表单参数是嵌套的.
我一直在玩Backbone.js,我注意到默认情况下,Backbone没有像普通的Rails格式那样嵌套参数,这实际上是我所期待的.所以我想知道我应该做些什么......
我
在服务器端弄清楚,如果它是来自Backbone的请求,通过查看接受标题等,并自己操纵params,这样我可以保持我的控制器代码小:
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
Run Code Online (Sandbox Code Playgroud)
或者,我是否在每个分支中实例化对象,最终会重复代码,但从长远来看可能更易于维护....
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
Run Code Online (Sandbox Code Playgroud)
或者我是否通过重写.toJSON方法修改我的Backbone.js模型(我不完全确定如何做,因为我还不太了解Backbone.js)所以它嵌套了params?
在这种情况下,我可以访问应用程序的两面,但我对其他人正在做的事感兴趣.