2011-10-20 31 views
12

Tôi có vài năm phát triển Rails và trải nghiệm Backbone.js vài ngày. Sau vài ngày này, tôi nghĩ tôi đã trở thành hương vị của Backbone.js. Tôi đã tự hỏi về loại trùng lặp mà xuất hiện phát triển Backbone.js kịch bản khách hàng phong phú với Rails ở mặt sau. Rất nhiều mô hình được thực hiện một phần trên phần Backbone (cấu trúc mô hình và các xác nhận hợp lệ).Backbone.js với Rails - xử lý logic trùng lặp trong các mô hình

Bạn có biết công cụ, đá quý sẽ xử lý sự trùng lặp này không? Hay nói chung, nó có ý nghĩa để giải quyết vấn đề này?

Xin lỗi vì một câu hỏi mang tính đầu cơ tiềm năng. Tôi tự hỏi liệu có ai đó đã cố gắng giải quyết câu hỏi về sao chép mô hình Rails/Backbone hay không.

+3

Tôi đang tìm kiếm điều này, một ngày khác nữa và đang đợi sách http://workshops.thoughtbot.com/backbone-js-on-rails của ThoughtBot sẽ có phần được gọi là: 'Client/Server duplicate logic kinh doanh 'tuy nhiên nó chưa được bắt đầu. – sren

+0

@SimonRentzke Cảm ơn bạn đã tip! Tôi sẽ theo dõi ebook này. – fifigyuri

Trả lời

2

Bạn không phải tạo kiến ​​trúc mô hình trùng lặp cho Đường trục, mặc dù đó thường là cách đơn giản nhất để đi. (Có các phần mở rộng js cho xương sống có thêm has_many và không có điều gì, nếu bạn đang đi tuyến đường đó: https://github.com/dbrady/ligament.jshttps://github.com/PaulUithol/Backbone-relational)

KHUYẾN CÁO: Đừng làm như sau, nó hút.

Nhưng bạn có thể chuyển bất kỳ JSON nào thành xương sống mà bạn thích và gọi đó là "mô hình" và tạo một bộ điều khiển riêng để xử lý việc lưu bất kỳ thứ gì bạn đặt vào đó. Điều đó có thể lộn xộn hơn nhiều, nhưng gọn gàng hơn nếu bạn muốn gửi một lượng lớn JSON tới xương sống và giữ nó trong một mô hình.

Ví dụ:

# controller 
def index 
    @json = User.first.to_json(:include => {:address => {}, :contacts => {}) 
end 

Gửi JSON để xương sống, và bạn có một đối tượng có quan hệ lồng nhau, mặc dù nó hầu như vô nghĩa với Backbone mà không cần một số cách để duy trì mối quan hệ, vì vậy bạn sẽ phải trích xuất các bit bạn muốn giải quyết bằng JavaScript, đặt chúng lại với nhau và tạo các hành động tạo/cập nhật trong Rails khá lạ mắt để xử lý ...

Nhưng điểm là bạn có thể tự ý tạo bất kỳ loại đối tượng JSON nào bạn muốn - bởi vì Backbone không biết gì về những gì Rails sẽ làm với nó. Backbone chỉ nhận được một URL để quản lý các yêu cầu HTTP của nó, và tin tưởng rằng máy chủ được thiết lập để xử lý bất cứ điều gì nó ném vào nó. Vì vậy, hãy gửi và nhận chính xác loại đối tượng JSON bạn muốn - chỉ cần lưu ý rằng bạn sẽ phải tìm ra cách xử lý chúng trong Rails nếu chúng vượt qua các mô hình.

Thực sự, nó sạch hơn nhiều chỉ để khắc phục sự cố và sao chép rất nhiều kiến ​​trúc mô hình trong Backbone, thật không may.

Tôi nghĩ rằng điều xương sống huyền diệu nhất mà tôi đã thấy cho đến nay là những thư viện kết hợp js được liệt kê ở trên. Xương sống vẫn còn khá clunky.

Có một viên đá quý được gọi là 'xương sống đường ray' hoặc 'đường ray-xương sống' (có một xung đột kỳ lạ khiến nó trở nên vô lý) bởi "codebrew" https://github.com/codebrew/backbone-rails, sẽ tạo ra một số coffeescript đẹp để bạn làm việc. Đó có lẽ là cách dễ nhất để đi, nhưng không gọn gàng như bạn có thể thích, vì nó là một trình tạo mã.

Nếu có ai có thể thắp sáng thêm về điều này hoặc hoàn toàn bác bỏ tôi, vui lòng làm! Tôi cũng đang ở giữa kiến ​​thức Backbone của mình.

P.S. Bạn có thể không muốn dựa vào Backbone để làm xác nhận ...:) Dễ dàng hackable. Nếu bạn đang thêm chúng vào JS để giảm số lần gửi xấu, thì bạn sẽ phải sống với việc sao chép các xác nhận hợp lệ.

+0

Tôi vừa phát hiện ra đá quý rabl, có thể giúp tổ chức các mô hình json theo một cách khác. Tuyệt đấy! https://github.com/nesquena/rabl – wulftone

Các vấn đề liên quan