Rails 3 ActiveAdmin。 如何为关联记录设置默认排序顺序?

我有货运模型和发票模型。 发票属于发货。

所以我添加了这样的装运的默认排序顺序……

config.sort_order = 'file_number_desc' 

但现在我想为发票添加相同的排序顺序,(出货表是具有file_number列的出货表),但这似乎不起作用:

 config.sort_order = 'shipments.file_number_desc' 

很好的解决方案@Siwei,我只是使用,而不是scope :joined join默认情况下显示名为Joined的列表顶部的filter,如下所示:

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

其中修改ActiveAdmin控制器以将该范围用作默认值,而不向用户显示。

根据这篇文章在其官方网站上(我想知道为什么维护者没有将这个导入post包含在文件中^ _ ^): https : //github.com/gregbell/active_admin/pull/623

步骤1。 假设您有“generic_items”属于“vendor”,并且vendor有一个属性: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 

第2步。 现在您想在“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 

PS然而,一旦你这样做,filter将会关闭。 目前。 希望这个问题可以尽快修复。