如何在Rail的Jbuilder JSON中设置订单

时间:2017-01-22 04:00:36

标签: ruby-on-rails json

我正在Rails 5中开发一个简单的发票应用

对于这个问题,我有2个模型。

引用

select 
    top 1 CustomerID,
    datepart(q, OrderDate) qtr,
    Sum(TotalDue) sum_totaldue
From Sales.SalesOrderHeader
Group by
    CustomerID, 
    DATEPART(q, OrderDate)
Order by sum_totaldue desc

和QuoteItem

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

因为我在QuoteItem模型中有一个范围,所以我可以在item_order字段中显示我的erb中的数据。

但是现在我需要在JSON中使用相同的数据来构建动态表。我的QuoteItem模型中的Scope不适用于Jbuilder。

这是JSON格式:

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

  belongs_to :quote
end

我的问题是如何使用“item_order”字段而不是“id”设置 json.quote_items 的排序顺序

1 个答案:

答案 0 :(得分:2)

解决。

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