我期待在使用Ember.js一個新的,Rails的支持,應用程序(使用Active模式串行器)。我正在努力爭取讓我的頭腦圍繞框架,所以也許這是一個新手問題。與ember.js概念掙扎 - 大量數據
我的數據結構是這樣的(簡化):
Event Days --
Events --
* Participants
* Location
內的「活動日」可能有數千個事件的(和事件數十個參與者和所有的數據中)。
當我想要獲取事件日期列表時,我加載了一些JSON,它不僅包含EventDays,還包含所有事件(然後是所有事件中的所有數據),這似乎是「錯誤的......」基本上,它裝載整棵樹!
我以爲我可以通過使用自定義序列化的行動解決這個問題,但是,在某些時候我需要得到的數據和灰燼似乎永遠不會再調用服務器。
所以,如果我加載EventDays和根本沒有事件數據裏面灰燼從未調用服務器更新EventDay對象時,我通過點擊一個「秀」的方法。
,如果我是清楚的在這裏,我不知道。我希望有人能夠理解我在駕駛什麼!
真的,我認爲它歸結爲兩個問題:
1)如何正確地過濾掉信息請求,以便只有本地對象填寫(即在調用索引方法,我需要一個列表沒有孩子的活動日,但在呼叫展示方法,我需要一個單一的事件日填補下一級)
2)如何讓灰燼在適當的時間'重新加載'一個對象來填寫適當的內容
也許我在看這個錯誤 - 缺少像灰燼點 - 如果是這樣我WELCO我指出了適當的教程,但我找不到任何東西(甚至在Ember站點上),它解釋了除了一次加載整個樹之外的其他任何事情。有了Gig的數據,這看起來很慢,是一個明確的瀏覽器殺手,而且顯然是錯誤的。
我欣賞我的StackOverflow的弟兄們幫助我學習!
編輯
正如我馬上下來投給某種原因,我將添加代碼:
客戶端:
App.EventDay = DS.Model.extend({
day: DS.attr('date'),
events: DS.hasMany("Event", {async: true})
});
服務器端:
class EventDaySerializer < ActiveModel::Serializer
attributes :id, :day
has_many :events, embed: :ids, key: :events
end
編輯2
後kertap的建議我增加了異步屬性和更新上面的串行器的代碼。
JSON的是在這裏:
{"event_day":
{"id":2,
"day":"2013-12-05",
"events":[1,2,3,4,5,6,7,8]
}
}
值得注意的是,如果我沒有在串行器使用key: :events
參數的東西回來爲"event_ids": [1,2,3,4]
它,你會覺得是對的,但會導致灰燼不看到事件。
另外值得注意的是,如果我這樣做:
HorseFeeder.ApplicationSerializer = DS.ActiveModelSerializer.extend({});
然後沒有什麼作品了!我得到Error while loading route: Error: Assertion Failed: The response from a findAll must be an Array, not undefined
我真的不認爲它應該是這個很難得到灰燼和Rails的基本接線工作...
謝謝kertap。查看我的編輯,看看現在會發生什麼。 – phil
對不起,我忘了rails有自己的命名約定,特別是使用下劃線和整個_id/_ids的東西。如果您繼續使用DS.ActiveModelSerializer並刪除鍵:EventDaySerializer上hasMany的事件是否有效? – PaddyDwyer
只要我在DS.ActiveModelSerializer中添加,我就會得到'錯誤:斷言失敗:加載路由時出錯:錯誤:斷言失敗:加載索引對象時,來自findAll的響應必須是數組,而不是未定義的。 – phil