我们正在使用Ember数据和Rails实现一个功能,并不断遇到障碍。我们不确定这是否与我们的代码存在问题,Ember或Ember数据存在问题,或者仅仅是因为缺少文档而无法获取它。灰烬关联和嵌套的URL
任何帮助将非常感激。
Rails的
我们有一个待办事项清单,与多个条目。在Rails中,它们被设置如下:
class ToDo < ActiveRecord::Base
has_many :to_do_entries, dependent: :destroy
alias_method :entries, :to_do_entries
validates_presence_of :title
end
class ToDoEntry < ActiveRecord::Base
attr_accessible :completed_at, :is_deleted, :priority, :title
belongs_to :to_do
alias_method :parent, :to_do
validates_presence_of :to_do, :title
end
的路由进行设置为嵌套:
resources :to_dos do
resources :to_do_entries do
end
end
这样一来,端网址最终被/to_do /:to_do_id/to_do_entry /: to_do_entry_id。
我们正在使用的active_model_serializers宝石,并具有以下串行设置:
class ToDoSerializer < ActiveModel::Serializer
attributes :id,
:title
has_many :to_do_entries, embed: :objects
end
class ToDoEntrySerializer < ActiveModel::Serializer
attributes :id,
:to_do_id,
:title,
:priority
has_one :to_do
end
灰烬
我们使用灰烬数据和REST适配器和等效模型的建立如下:
App.ToDo = DS.Model.extend({
title: DS.attr('string'),
entries: DS.hasMany('App.ToDoEntry', { embedded: true })
});
App.ToDoEntry = DS.Model.extend({
title: DS.attr('string'),
to_do_id: DS.attr('number'),
priority: DS.attr('number'),
todo: DS.belongsTo('App.ToDo')
});
的问题
我的理解是,我们应该可以直接从日程访问的条目列表,通过使用控制台执行以下操作:
> t = App.ToDo.find(21)
> e = t.get("entries")
这似乎工作,但只返回一个类,我不知道如何调试它,看看它是否工作。
我有两个具体的问题:
我们如何调试,使用控制台,该协会并确保它们正常工作。
如果我们单独加载条目(而不是将它们嵌入父代),我们如何才能使用像上面那样的嵌套路线?
你可以做些什么像't.get(“entries”)。toArray()'。您将能够验证这些ID。你可以像't.get(“entries”)。toArray()[0] .get('title')''来检查一个给定的属性。我不相信巢路由REST adapapter开箱即用。实际上有一个关于它的[问题](https://github.com/emberjs/data/issues/170),我现在已经关闭了。我还没有机会尝试在我的适配器中实现嵌套路由(我现在在服务器上使用了一个解决方法)。 –