我們正在使用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),我現在已經關閉了。我還沒有機會嘗試在我的適配器中實現嵌套路由(我現在在服務器上使用了一個解決方法)。 –