Ho avuto lo stesso problema, ma ho bisogno di selezionare personalizzato in filtri di indice e input di form, così ho trovato una soluzione simile: in App/ingressi (come suggerisco Formtastic) creo due clases:
in app/ingressi/country_select_input.rb:
class CountrySelectInput < Formtastic::Inputs::SelectInput
def collection
I18nCountrySelect::Countries::COUNTRY_CODES.map { |country_code|
translation = I18n.t(country_code, scope: :countries, default: 'missing')
translation == 'missing' ? nil : [translation, country_code]
}.compact.sort
end
end
in app/ingressi/filter_country_select_input.r B:
class FilterCountrySelectInput < ActiveAdmin::Inputs::FilterSelectInput
def collection
I18nCountrySelect::Countries::COUNTRY_CODES.map { |country_code|
translation = I18n.t(country_code, scope: :countries, default: 'missing')
translation == 'missing' ? nil : [translation, country_code]
}.compact.sort
end
end
E nella mia app/admin/city.rb:
ActiveAdmin.register City do
index do
column :name
column :country_code, sortable: :country_code do |city|
I18n.t(city.country_code, scope: :countries)
end
column :created_at
column :updated_at
default_actions
end
filter :name
filter :country_code, as: :country_select
filter :created_at
form do |f|
f.inputs do
f.input :name
f.input :country_code, as: :country_select
end
f.actions
end
end
Come si può vedere, ActiveAdmin cercare Filter [: your_custom_name:] Input e [: your_custom_name:] di ingresso in contesto diverso, filtri indice o input modulo. Pertanto, è possibile creare questa estensione di clases di ActiveAdmin :: Inputs: FilterSelectInput o Formtastic :: Inputs: SelectInput e personalizzare la logica.
Funziona per me, spero lo si può trovare utile