yuя*_*uяi 4 api json ember.js ruby-on-rails-4
在Rails API方面,我有以下两个模型:
class Grower < ActiveRecord::Base
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses
end
class Address < ActiveRecord::Base
belongs_to :addressable, polymorphic: true
end
Run Code Online (Sandbox Code Playgroud)
以及一个Growers控制器,它返回并可以创建/更新具有嵌入式地址属性的种植者.我还有一个具有正确路由的地址控制器,以便可以查看/创建/更新特定种植者的地址.后者更像是"in-case",我不确定我是否需要返回/更新/创建地址作为单独的有效负载.
我开始尝试拼凑一个Ember应用程序,这个应用程序允许我在地址的同时查看/编辑/创建一个Grower.任何人都可以指向现有的真实或示例应用程序吗?我将在发布时发布我的代码,但我已经知道某些方面我会遇到麻烦:
Rails返回/期望名为addresses_attributes的嵌套参数.我确信,恩伯不会使用那种惯例.解决这个问题的最佳方法是什么?
由于多态关联(Grower以外的对象可以寻址),在API /地址方面,为了获得正确的belongs_to对象,Rails将addressable_id与addressable_type结合使用.在此示例中,addressable_type将是"Grower",而addressable_id将是grower_id值.怎么会在Ember那边翻译呢?
更新:
我让它至少以不同的方式工作.至少对于这种特殊情况,我的首选解决方案是在答案部分.
小智 8
以下是基于@yuяi的策略的代码示例,该策略对我有用:
App.Post = DS.Model.extend
comments: DS.hasMany('comment')
App.PostSerializer = DS.ActiveModelSerializer.extend( DS.EmbeddedRecordsMixin,
attrs:
comments: {embedded: 'always'}
keyForAttribute: (attr) ->
if attr == "comments"
"comments_attributes"
else
@_super(attr)
)
Run Code Online (Sandbox Code Playgroud)
该解决方案适用于Ember 1.6.1和Ember Data 1.0.0-beta.8.2a68c63a.
我找到了几种方法来完成它,但最终方法不需要对Rails/API方面进行任何更改.
在客户端(Ember)方面:
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |