Chúng tôi đang triển khai tính năng sử dụng dữ liệu Ember và Rails và tiếp tục nhấn một cú đánh. Chúng tôi không chắc đó có phải là vấn đề với mã của chúng tôi hay không, một lỗi với dữ liệu Ember hoặc Ember hoặc chỉ là chúng tôi không nhận được nó do thiếu tài liệu.Các liên kết Ember và các URL lồng nhau
Mọi trợ giúp sẽ thực sự được đánh giá cao.
Rails
Chúng tôi có một việc cần làm, với nhiều mục. Trong Rails, họ được thiết lập như sau:
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
Các tuyến đường được thiết lập là lồng nhau:
resources :to_dos do
resources :to_do_entries do
end
end
Và vì thế các URL cuối kết thúc được /to_do /: to_do_id/to_do_entry /: to_do_entry_id.
Chúng tôi đang sử dụng active_model_serializers đá quý và có các serializers sau thành lập:
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
Ember
Chúng tôi đang sử dụng dữ liệu Ember và adapter REST và các mô hình tương đương được thiết lập như sau:
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')
});
Sự cố
hiểu biết của tôi là chúng ta sẽ có thể truy cập vào danh sách các mục trực tiếp từ ToDo, bằng cách sử dụng sau đây trong giao diện điều khiển:
> t = App.ToDo.find(21)
> e = t.get("entries")
này dường như để làm việc, nhưng chỉ trả về một lớp học và Tôi không có ý tưởng làm thế nào để gỡ lỗi nó và xem nếu nó làm việc.
Tôi có hai câu hỏi cụ thể:
Làm sao chúng ta có thể gỡ lỗi, sử dụng giao diện điều khiển, các hiệp hội và chắc chắn rằng họ đang làm việc một cách chính xác.
Nếu chúng tôi tải các mục riêng biệt (thay vì để chúng được nhúng trong phụ huynh), làm cách nào chúng tôi có thể sử dụng các tuyến đường lồng nhau như chúng tôi có ở trên?
Bạn có thể làm điều gì đó như 't.get (" mục "). toArray()'. Bạn sẽ có thể xác minh ID. Và bạn có thể làm một cái gì đó như 't.get (" mục "). ToArray() [0] .get ('title')' để kiểm tra một thuộc tính đã cho. Tôi không tin rằng các tuyến làm tổ được hỗ trợ ra khỏi hộp với phần phụ REST. Thực ra có một [vấn đề] (https://github.com/emberjs/data/issues/170) về nó mà tôi đã mở và nó đã bị đóng. Tôi chưa có cơ hội để thử triển khai các tuyến lồng nhau trong bộ điều hợp của mình (hiện tại tôi đang sử dụng một công việc trên máy chủ). –