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

时间:2012-02-28 18:17:35

标签: ruby-on-rails ruby ruby-on-rails-3 activeadmin

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

所以我为这样的货物添加了默认的排序顺序......

config.sort_order = 'file_number_desc'

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

config.sort_order = 'shipments.file_number_desc'

2 个答案:

答案 0 :(得分:2)

很好的解决方案@Siwei,我会使用,而不是scope :joined,默认情况下会在名为Joined的列表顶部显示一个过滤器,而不是controller do def scoped_collection GenericItem.includes(:vendor) end end

{{1}}

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

答案 1 :(得分:1)

根据这个帖子在其官方网站上(我想知道为什么维护者没有将这个导入帖子包含在文件中^ _ ^):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

第二步。现在您想在“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。但是一旦你这样做,过滤器将会关闭。目前。希望这个问题可以尽快修复。