gpt4 book ai didi

ruby-on-rails - Backbone.js 和 Rails - 如何处理来自 Backbone 模型的参数?

转载 作者:行者123 更新时间:2023-12-03 11:06:51 25 4
gpt4 key购买 nike

在标准的 Rails Controller 中,我会创建一个这样的记录:

@user = User.new(params[:user])

这假设传入的表单参数是嵌套的。

我一直在玩 Backbone.js,我注意到默认情况下,Backbone 不会像普通 Rails 表单那样嵌套参数,这实际上是我所期望的。所以我在想我该怎么办...

我是吗

在服务器端通过查看接受 header 等来确定它是否是来自 Backbone 的请求并自己操作参数,以便我可以保持我的 Controller 代码很小:
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

或者我是否通过覆盖 .toJSON 方法(我不完全确定该怎么做,因为我对 Backbone.js 还不够了解)来修改我的 Backbone.js 模型,以便它嵌套参数?

在这种情况下,我可以访问应用程序的两端,但我对其他人在做什么感兴趣。

最佳答案

当您可以将一般 Rails 表单和 Backbone 表单与根节点匹配时,这很好。这就是为什么在我的上一个应用程序中我选择覆盖 Backbone 模型的 toJSON 方法的原因。

您可以覆盖全局 toJSON 方法 as Raimonds Simanovskis suggested .但即使是非 DRY 方式方法也不错。每个模型定义只有一行样板:

// Depends on Underscore.js
User = Backbone.Model.extend({
toJSON: function() {
return { user: _.clone( this.attributes ) }
},
// Your other methods here
});

编辑:更正的代码示例。抱歉出现错误,我正在从 CoffeeScript 翻译成 JavaScript。

关于ruby-on-rails - Backbone.js 和 Rails - 如何处理来自 Backbone 模型的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6272070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com