Rails 3 ActiveAdmin.Как установить порядок сортировки по умолчанию для связанной записи? - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть модель отгрузки и модель счета.Счет-фактура относится к отгрузке.

Поэтому я добавил порядок сортировки по умолчанию для отгрузки, как этот ...

config.sort_order = 'file_number_desc'

Но теперь я хочу добавить такой же порядок сортировки для счетов-фактур (отгрузкитаблица имеет столбец file_number), но это не похоже на работу:

config.sort_order = 'shipments.file_number_desc'

Ответы [ 2 ]

2 голосов
/ 19 сентября 2012

Хорошее решение @Siwei, я бы просто использовал вместо scope :joined, который по умолчанию показывает фильтр в верхней части списка с именем Joined, следующее:

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

, которое изменяет контроллер ActiveAdminиспользовать эту область по умолчанию, не показывая ее пользователю.

1 голос
/ 04 апреля 2012

согласно этому посту на его официальном сайте (мне интересно, почему сопровождающий не включил этот пост импорта в документ ^ _ ^): https://github.com/gregbell/active_admin/pull/623

Step1.при условии, что у вас «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

Step2.Теперь вы хотите сделать заказ на "vendor.name" на вашей странице "admin / generic_items".

# 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, однако фильтр отключится, как только вы сделаете это.теперь.надеюсь, что эта проблема может быть решена как можно скорее.

...