2012-03-04 15 views
6

Tôi muốn thứ tự đầu ra json theo id (id con)Làm thế nào để "đặt hàng theo id" JSON với Rabl

Tôi có thể giải quyết vấn đề này không?

đây là một số mã trong dự án của tôi

show.json.rabl (tôi đã sử dụng Rabl)

object @book 
attributes :id , :name 

child :questions do 
    attributes :id , :name 
end 

books_controller.rb

def show 
    @book = Book.find(params[:id]) 
end 

Xin lỗi vì tiếng Anh của tôi, Cảm ơn bạn.

Trả lời

4

Nó phụ thuộc vào ứng dụng của bạn và những gì bạn muốn đạt được, nhưng bạn có thể định nghĩa một default_scope trong Question mô hình như thế này:

class Question < ActiveRecord::Base 
    default_scope order('id ASC') 
end 

Hoặc bạn có thể định nghĩa một default_scope trong mô hình Book:

class Book < ActiveRecord::Base 
    default_scope joins(:questions).order('questions.id ASC') 
end 

Nếu bạn muốn tải mong muốn questions, sau đó sử dụng includes thay vì join.

1

tôi không biết RABL, nhưng tôi nghĩ rằng bạn chỉ có thể chuyển vào bộ sưu tập thay vì biểu tượng. nhất định, mà bạn :question là một mối quan hệ has_many trên lớp Book của bạn, bạn chỉ có thể sử dụng một công cụ tìm cho rằng:

child @book.questions.order('id ASC') do 
    attributes :id , :name 
end 
+0

Có,: câu hỏi là mối quan hệ has_many trong lớp Sách của tôi, Cảm ơn bạn, tôi đã thử nhưng vẫn không hoạt động. –

+0

ý của bạn là gì? json kết quả là gì? – phoet

+0

btw, đừng xin lỗi hoặc viết lời cảm ơn về các câu hỏi của bạn. – phoet

0

Do trật tự trong các mô hình và sử dụng Rabl để truy vấn phương pháp đặt hàng

mô hình Câu hỏi

class Question < ActiveRecord::Base 
    # ... 
    scope :by_id, order('id ASC') 
    # ... 
end 

và sau đó có một phương pháp trong Sách

class Book < ActiveRecord::Base 
    # ... 
    has_many :questions 
    # ... 
    def ordered_questions 
    questions.by_id 
    end 
    # ... 
end 

Cuối cùng, Rabl của bạn sẽ là

object @book 
child :ordered_questions do 
    attributes :id, :name 
end 

https://github.com/nesquena/rabl/issues/387

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