2017-01-22 1 views
3

Je développe une application de facturation simple dans Rails 5Comment puis-je définir une commande dans Jbu Jbuilder d'un rail

Pour cette question, j'ai 2 modèles.

Citation

class Quote < ApplicationRecord 
    belongs_to :client, optional: true 
    has_many :quote_items, dependent: :destroy 
    accepts_nested_attributes_for :quote_items 
end 

Et QuoteItem

class QuoteItem < ApplicationRecord 
    default_scope { order(:id, :item_order) } 

    belongs_to :quote 
end 

Parce que j'ai une portée dans le modèle QuoteItem je peux afficher les données dans mon erb base dans le domaine de item_order.

Mais maintenant j'ai besoin d'utiliser les mêmes données dans JSON pour construire une table dynamique. Et le Scope dans mon modèle QuoteItem ne fonctionne pas avec Jbuilder.

Ceci est le format JSON:

#myapp/app/views/quotes/show.json.jbuilder 

json.quote do 
    json.partial! "quotes/quote", quote: @quote 


json.quote_items do 
    json.array!(@quote.quote_items) do |item| 
    json.id item.id 
    json.clave item.product.clave 
    json.name item.name 
    json.quantity item.quantity 
    json.item_order item.item_order 
    json.days item.days 
    json.unit_price item.unit_price 
    json.seguro item.seguro 
    json.descuento item.descuento 
    json.total item.total 
end 

end 
end 

Ma question est Comment puis-je régler l'ordre de tri json.quote_items avec le "item_order" champ au lieu de son "id".

Répondre

2

Résolu.

json.quote_items do 
    json.array!(@quote.quote_items.sort_by{|o| o[:item_order]}) do |item| 
    json.id item.id 
    ..... 
end