Ruby on rails rails:活动管理筛选器

Ruby on rails rails:活动管理筛选器,ruby-on-rails,ruby,ruby-on-rails-4,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 4,Activeadmin,我在rails应用程序中使用Active admin,希望根据国家筛选公司模型,我在公司表中有一个国家列,数据类型为字符串,我使用的是gem。 所以我实际上在做的是 filter :country, as: :country 但这不起作用,有人能帮我找到一个工作国过滤器吗 我知道这个代码filter:country,as::string可以工作,但是我想要一个包含所有国家的选择列表,而不是这就是你在AA中使用filter的方式: filter :country, as: :select 这样

我在rails应用程序中使用Active admin,希望根据国家筛选公司模型,我在公司表中有一个国家列,数据类型为字符串,我使用的是gem。 所以我实际上在做的是

filter :country, as: :country
但这不起作用,有人能帮我找到一个工作国过滤器吗


我知道这个代码
filter:country,as::string
可以工作,但是我想要一个包含所有国家的选择列表,而不是这就是你在AA中使用filter的方式:

filter :country, as: :select
这样做的目的是为select创建一个集合,其中
Company
类的每个实例都通过名为
country

编辑 根据评论,要使用国家名称而不是代码,您可以使用以下选项:

filter :country, as: :select, collection: ActionView::Helpers::FormOptionsHelper::COUNTRIES
column :country do |g|
  ISO3166::Country[g.country]
end
编辑#2 要在视图中显示国家名称而不是国家代码,必须执行以下操作:

filter :country, as: :select, collection: ActionView::Helpers::FormOptionsHelper::COUNTRIES
column :country do |g|
  ISO3166::Country[g.country]
end

我有一个名为Soundwave的模型,有一个国家字段,只包含两个国家:英国和美国。 所以,我做了一个这样的收集:

  filter :country, as: :select, collection: -> {
    Soundwave.group(:country).select(:country).map(&:country)
  }

这是给我一个数字列表,所以我改为filter:country,as::select,它工作了。唯一的一件事是,我得到的是国家代码,而不是name@djrs12请参阅根据您的请求编辑的答案。如果有帮助,请接受答案。这不起作用,请告诉我此错误未定义的局部变量或方法'countries_list'@djrs12尝试此:
filter:country,as::select,collection:ActionView::Helpers::formoptionhelp::countries
即使它似乎不是最干净的解决方案,也能工作,谢谢