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

2024-03-29

在标准 Rails 控制器中,我将创建如下记录:

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

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

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

Do I

通过查看接受标头等来确定服务器端是否是来自 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

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

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


如果您可以让常规 Rails 表单和 Backbone 表单相对于根节点进行匹配,那就太好了。这就是为什么在我的上一个应用程序中我选择覆盖 Backbone 模型的 toJSON 方法。

您可以覆盖全局 toJSON 方法正如雷蒙兹·西马诺夫斯基斯建议的那样 http://twitter.com/#!/rsim/status/78220812519350274。但即使是非 DRY 方式方法也不是那么糟糕。每个模型定义只需一行样板:

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

Edit:更正了代码示例。抱歉出现错误,我正在从 CoffeeScript 翻译为 JavaScript。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Backbone.js 和 Rails - 如何处理来自 Backbone 模型的参数? 的相关文章

随机推荐

  • 堆的算法在列表列表中的实现

    我正在使用堆算法创建一个包含所述列表的每个排列的列表列表 每个排列将是其自己的列表 当我在算法中打印它时它可以正常工作 但是当我尝试将它添加到我的列表列表中并且它们都是相同的数组 4 1 2 3 时它不能正常工作 我注释掉了我测试过的打印内
  • 我们如何将上下文转换为片段引用?

    我有一个类 Common 和一个片段 FragmentTest Common java 是一个通用类 它具有其他活动的一些通用函数 这些函数通过每个活动的上下文访问 在这里我传递片段的上下文到该类中的函数 我正在这样做 在片段中 Commo
  • 如何在Python中将一列整数转换为标准小时时间?

    我有一个像这样的数据框 BuyTime ID SellTime 94650 1 94651 94717 1 94817 120458 2 114119 买入时间和卖出时间类型是整数 但我想将它们转换为标准时间日期 我已经用过 quote S
  • Javascript 强制在浏览器中打开链接

    有没有办法从 JavaScript 进行对象检测并强制在特定浏览器中打开链接 For eg 在 IE 中打开 在 Firefox 中打开 不 如果没有一些浏览器插件 绝对不行 如果可能的话 这将是一个巨大的安全风险
  • 数据表 - 按日期范围过滤 - 未返回正确的结果

    我目前正在使用 jQuery 的数据表插件https datatables net https datatables net 使用此处找到的日期范围插件http www daterangepicker com http www datera
  • 删除子循环在完成之前退出

    我有以下代码 它查找文档中类名为 foo 的所有元素 然后将它们全部删除 function doc var items doc getElementsByClassName foo alert items length if items l
  • 获取物理IP地址背后的技巧是什么?

    我怎样才能获得与我访问 时获得的相同的IP地址 http www whatsmyip org http www whatsmyip org 使用C 和winsock库 我知道如何获取 127 0 0 1 和路由器IP 192 168 1 1
  • 哪个文件 gradle.properties 的优先级更高?

    我有本地和全局 gradle properties 需要全局的来配置代理 但它还包含其他参数 想知道如果对于相同的设置指定不同的值会发生什么 哪些文件将优先 或者它们可能是它们是如何合并的 我的全局 gradle properties sy
  • 405 NuGet 推送中不允许使用方法

    当我尝试推送时 我的 NuGet 服务器抛出 405 不允许 至少 NuGet 控制台是这么说的 Failed to process request Method Not Allowed The remote server returned
  • 深度优先图算法的时间复杂度[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始学习时间复杂度 并且我在示例中查找了一些简单排序的时间复杂度 我想知道如何计算图中深度优先搜索的平均时间复杂度 V n and E
  • 如何按降序对 JSON 数组元素进行排序? [复制]

    这个问题在这里已经有答案了 In my 索引 html 我从服务器接收数据 顺序如下 id 1 keyOne valueOne keyTwo valueTwo id 2 keyOne valueOne keyTwo valueTwo id
  • 子类化 static.File

    我是 Twisted 的新手 在对twisted 中的 static File 进行一些必要的子类化时遇到了麻烦 我正在尝试在子类中设置请求标头 class ResponseFile static File def render GET s
  • now-cli 部署不会构建 package.json 依赖项

    我正在尝试通过部署 Sapper 构建的应用程序 now node 该任务基本上是部署具有依赖项的 Polka 服务器并静态地提供静态 和客户端 文件 我已设法通过 includeFiles 包含 Lambda 所需的文件 但现在我在日志中
  • IIS 7如何保留网站子文件夹身份验证设置

    在 IIS 中 您可以使用 功能 视图来设置文件夹级别的设置 请参见屏幕截图 我想对网站的多个子文件夹禁用匿名身份验证 并将这些设置保存到源代码管理中 我想知道 IIS 将这些设置保存在哪里 它们不在网站 web config 或子文件夹内
  • Hibernate为MySQL生成同名索引和外键

    因此 在 Hibernate 管理的一个类中 我有以下属性定义 ManyToOne optional false private Company company 当为 MySQL 创建数据库模式时 Hibernate 会自动为此字段创建外键
  • 等到作用域变量加载完毕后,再在 angular.js 的视图中使用它

    我见过this https stackoverflow com a 11972028 110233 and this https stackoverflow com questions 12265565 angularjs promise
  • 盈透证券 API:交易者工作站 (TWS) 与 IB 网关

    In 据记载 为了使用 IB api 您必须通过 TWS 或 IB 网关连接到它 我们的 API 需要通过交易者工作站 TWS 或 IB 网关进行连接 各自的优势是什么 哪种解决方案 网关或 TWS 可提供更好的性能 网关缺少 TWS 的
  • 如何在类中创建模板函数? (C++)

    我知道可以制作一个模板函数 template
  • C# 的磁盘支持字典/缓存

    我正在寻找一种用于缓存大量数据的解决方案 相关问题但针对不同语言 Python 基于磁盘的字典 https stackoverflow com questions 226693 python disk based dictionary 磁盘
  • Backbone.js 和 Rails - 如何处理来自 Backbone 模型的参数?

    在标准 Rails 控制器中 我将创建如下记录 user User new params user 这假设传入的表单参数是嵌套的 我一直在使用 Backbone js 我注意到默认情况下 Backbone 不会像普通 Rails 表单那样嵌