2012-02-28 40 views
3

我有一個貨運模型和一個發票模型。該發票屬於裝運。Rails 3 ActiveAdmin。如何爲關聯記錄設置默認排序順序?

所以我增加了一個默認的排序順序是這樣裝運...

config.sort_order = 'file_number_desc' 

但現在我想補充的發票相同的排序順序,(出貨量表是具有file_number列中的一個)但這似乎並沒有工作:

config.sort_order = 'shipments.file_number_desc' 

回答

2

很好的解決方案@Siwei,我只想用的,而不是scope :joined其缺省顯示上稱爲加入列表頂部的過濾器,如下:

controller do 
    def scoped_collection 
    GenericItem.includes(:vendor) 
    end 
end 

哪些修改ActiveAdmin控制器使用作爲默認的範圍,而不顯示給用戶。

1

根據這個帖子在其官方網站(我很奇怪,爲什麼維護者並沒有包括這個導入後的文件^ _ ^):https://github.com/gregbell/active_admin/pull/623

Step1。假設你有「generic_items」屬於「vendor」,並且vendor有一個attribute:name。

# app/models/generic_item.rb 
class GenericItem < ActiveRecord::Base 
    belongs_to :vendor 
end 

# app/models/vendor.rb 
class Vendor < ActiveRecord::Base 
    has_many :generic_items 
    # attr_accessor: name 
end 

Step2。現在您想在「admin/generic_items」頁面中輸入「vendor.name」。

# app/admin/generic_items.rb 
ActiveAdmin.register GenericItem do 

    scope :joined, :default => true do |generic_items| 
    generic_items.includes [:vendor] 
    end 

    index do 
    # other column definition... 
    column :vendor_id, :sortable => "vendors.name" do |generic_item| 
     generic_item.vendor.name if generic_item.vendor 
    end 
    end 
end 

P.S.但是一旦你這樣做,過濾器就會關閉。目前。希望這個問題可以儘快修復。