【问题标题】:Backbone.js: What is paramRoot: attribute in backbone.model?Backbone.js:什么是 paramRoot:backbone.model 中的属性?
【发布时间】:2012-11-12 17:40:25
【问题描述】:

我使用 rails-backbone gem 并生成了一个 Backbone 模型。该模型包括paramRoot: 属性。我认为它以某种方式告诉 Backbone 如何连接到相应的 Rails 模型,但我找不到任何关于它的文档。

paramRoot 究竟做了什么?

【问题讨论】:

  • 不完全重复,但答案可能会有所帮助:stackoverflow.com/q/8016296/479863
  • 其实我已经读过了,但答案很模糊。我发布了一个新的问题,因为它没有直接关注这个问题。

标签: ruby-on-rails backbone.js backbone-rails


【解决方案1】:

Backbone-rails 没有记录 paramRoot。我想你应该使用生成器来build your models

class <%= model_namespace %> extends Backbone.Model
  paramRoot: '<%= singular_table_name %>'
  #...

然后盲目地按照你说的去做。

如果您想知道它的作用,那么您必须阅读源代码(像往常一样)。 Backbone-rails 中唯一使用paramRoot 的东西是它们替代了标准Backbone.sync;他们的替换包含this:

if(model.paramRoot) {
  data[model.paramRoot] = model.toJSON();
} else {
  data = model.toJSON();
}

所做的只是将模型的序列化属性从标准的{attr1: v1, attr2: v2, ...} Backbone 形式更改为Rails 想要的{ model_name: { attr1: v1, ... } } 形式;那么您可以在 Rails 控制器中查看params[:model_name],而不仅仅是查看params

【讨论】:

  • 更好的解决方案可能是使用ActionController::ParamsWrapper
  • @Maletor:这对我来说似乎有点骇人听闻(虽然与上述骇客不同:)。似乎针对的是处于过渡或向后兼容性问题的 API,但我的意图可能是错误的。不过,ParamsWrapper 值得一提。
猜你喜欢
  • 2013-03-17
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2014-09-02
  • 2020-10-10
  • 2019-09-13
  • 2015-02-10
相关资源
最近更新 更多