2012-03-04 19 views
6

Chcę json kolejność wyjścia przez ID (identyfikator dziecka)Jak "zamówienie przez id" JSON z Rabl

mogę rozwiązać ten problem?

to jakiś kod w moim projekcie

show.json.rabl (użyłem Rabl)

object @book 
attributes :id , :name 

child :questions do 
    attributes :id , :name 
end 

books_controller.rb

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

Przepraszam za mój angielski, dziękuję.

Odpowiedz

4

To zależy od aplikacji i co chcesz osiągnąć, ale można zdefiniować default_scope w Question modelu tak:

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

Albo można zdefiniować default_scope w modelu Book:

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

Jeśli chcesz szybko załadować questions, użyj includes zamiast join.

1

Nie wiem RABL, ale myślę, że można po prostu przekazać w kolekcji zamiast symbolu. biorąc pod uwagę, że was :question jest has_many relacja na swojej klasie Book, można po prostu użyć wykrywacza na to:

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

Tak,: pytanie to ma wiele relacji na mojej klasie Book, Dziękuję, próbuję, ale nadal nie działa. –

+0

co masz na myśli? jaki jest wynik tego jsona? – phoet

+0

btw, nie przepraszaj lub napisz dziękuję rzeczy na twoje pytania. – phoet

0

Czy kolejność w modelach i używać Rabl kwerendy metoda zamawiania

modelu Pytanie

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

a następnie mieć metodę w Księdze

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

Wreszcie, Rabl byłoby być

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

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

Powiązane problemy