2013-02-08 26 views
9

Giả sử bạn có hai mô hình Rails với hiệp hội:Ember.js/Rails và các liên kết: cách gửi lại cho Rails bản ghi và các liên kết của nó?

class Foo < ActiveRecord::Base 
    attr_accessible :name 

    belongs_to :moo 
end 

class Moo < ActiveRecord::Base 
    attr_accessible :name 

    has_many :foos 
    accepts_nested_attributes_for :foos 
end 

Nhờ ActiveModel :: Serializer nó rất dễ dàng để gửi đối tượng lồng nhau hiện tại từ Rails để Ember.js. Nhưng tôi không thể tìm ra cách để tạo các đối tượng lồng nhau như vậy trong Ember và gửi chúng trở lại Rails cho sự bền bỉ. Sự hiểu biết của tôi là Ember cần phải gửi lại một cái gì đó như:

"moo"=> { 
    "foos_attributes"=>{"0"=>{"name" => ...}}, 
    "name" => ... 
} 

Có cách nào "chuẩn" để làm điều đó không? Tôi đã nhìn thấy một vài câu hỏi "cũ" về chủ đề này nhưng không có giải pháp thực sự, và kể từ khi Ember đã thay đổi rất nhiều, tôi nghĩ rằng có thể có một cách đơn giản để làm điều đó ngay bây giờ (mà không thay đổi Rest Adapter chính nó).

Thanks a lot, PJ

+0

Bạn có thể sử dụng ember dữ liệu cho nó. Ở đây, đọc về quan hệ trong dữ liệu ember. http://emberjs.com/guides/models/defining-models/#toc_one-to-one – xamenrax

+0

Cảm ơn Nikita. Thật không may nó không thực sự làm việc ... Tôi biết về bộ điều hợp Rest và thực tế bạn có thể bao gồm các bản ghi lồng nhau. Nhưng nó sẽ không cho phép bạn chỉ gửi một POST tới máy chủ cho cả bản ghi cha và các phần tử lồng nhau. Nó luôn luôn cháy nhiều POST - ít nhất tôi đã không tìm thấy một cách để làm điều đó. Vì vậy, nó sẽ không làm việc với Rails nếu bạn sử dụng accept_nested_attributes_for ở phía Rails. – PJC

+0

Tình huống tương tự với các tài liệu nhúng mongoDB. – xamenrax

Trả lời

2

Tôi vừa sửa đổi params trước khi trao cho họ để create hoặc update_attributes phương pháp như thế này:

line_items = params[:invoice].delete(:line_items) #Ember format 
    params[:invoice][:line_items_attributes] = line_items 
Các vấn đề liên quan