ActiveAdmin如何使用关联对列进行排序

Sli*_*ick 13 ruby-on-rails associations activeadmin

我正在开发一个ActiveAdmin应用程序,我希望按照"类型"对一列业务进行排序.不幸的是我的代码无效.我应该用什么代码来完成这个?这是我的代码......

app/models/business.rb


class Business < ActiveRecord::Base   
     belongs_to :type

     attr_accessible :description, :email, :facebook, :foursquare, :google, :manager,
    :mobile, :name, :phone, :type_id, :url, :yelp 
end
Run Code Online (Sandbox Code Playgroud)

app/models/type.rb


class Type < ActiveRecord::Base
  attr_accessible  :category
  has_many :businesses

  def to_s
    category
  end
end
Run Code Online (Sandbox Code Playgroud)

app/admin/businesses.rb


ActiveAdmin.register Business, { :sort_order => :name_asc } do
  scope :joined, :default => true do |businesses|
    businesses.includes [:type]
  end
  index do
    column :name
    column :type, :sortable => 'businesses.type'
    column :manager
    column :email
    default_actions
  end
end
Run Code Online (Sandbox Code Playgroud)

谢谢!

Evg*_*ova 20

根据这个讨论:https://github.com/gregbell/active_admin/pull/623,如果你不想使用范围,你可以改用scoped收集方法:

ActiveAdmin.register Business, { :sort_order => :name_asc } do
  scope :all, :default => true

  index do
    column :name
    column :type, :sortable => 'types.category'
    column :manager
    column :email
    default_actions
  end

  controller do
    def scoped_collection
      end_of_association_chain.includes(:type)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)


Sli*_*ick 8

固定

column :type, :sortable => 'types.category'