【问题标题】:Ember.js / Rails and associations: how to submit back to Rails a record and its associations?Ember.js / Rails 和关联:如何向 Rails 提交记录及其关联?
【发布时间】:2013-02-08 14:39:53
【问题描述】:

假设您有两个具有关联的 Rails 模型:

class Foo < ActiveRecord::Base
  attr_accessible :name

  belongs_to :moo
end

class Moo < ActiveRecord::Base
  attr_accessible :name

  has_many :foos
  accepts_nested_attributes_for :foos
end

感谢 ActiveModel::Serializer,可以轻松地将现有的嵌套对象从 Rails 发送到 Ember.js。但是我找不到在 Ember 中创建此类嵌套对象并将它们发送回 Rails 以进行持久化的方法。我的理解是 Ember 需要发回类似的东西:

"moo"=> {
   "foos_attributes"=>{"0"=>{"name" => ...}},
   "name" => ...
}

有没有“标准”的方式来做到这一点?我已经看到了一些关于这个主题的“老”问题,但没有真正的解决方案,而且由于 Ember 已经发生了很大的变化,我认为现在可能有一种简单的方法来做到这一点(不改变 Rest Adapter 本身)。

非常感谢, PJ

【问题讨论】:

  • 您可以使用 ember-data。在这里,阅读 ember-data 中的关系。 emberjs.com/guides/models/defining-models/#toc_one-to-one
  • 谢谢尼基塔。不幸的是,它并没有真正起作用......我知道 Rest 适配器以及您可以包含嵌套记录的事实。但它不会让您只为父记录和嵌套记录提交一个 POST 到服务器。它总是触发多个 POST - 至少我还没有找到办法。因此,如果您在 Rails 端使用 Accepts_nested_attributes_for,它将不适用于 Rails。
  • 与 mongoDB 嵌入文档的情况相同。
  • 您可以查看REST Adapter的bulkCommit设置。
  • 谢谢大家。如果有帮助,有人为 Ember 组装了一个关系适配器。它对我们来说效果很好:github.com/emberjs/data/pull/724

标签: ruby-on-rails ruby-on-rails-3 ember.js ember-data


【解决方案1】:

我刚刚修改了参数,然后将它们交给createupdate_attributes 这样的方法:

  line_items = params[:invoice].delete(:line_items) #Ember format
  params[:invoice][:line_items_attributes] = line_items

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多