在active_admin中添加范围以形成select

时间:2014-08-05 12:11:37

标签: ruby-on-rails activeadmin

我有一个active_admin形式的选择字段,它是一个关联的活动记录关系Travel,我只希望这些旅行显示为status = "active"。知道如何创建一个仅在活动记录表单上使用的范围吗?

1 个答案:

答案 0 :(得分:0)

正如您在README上看到的那样,ActiveAdmin使用Formtastic来构建表单。 在Formtastic docs中,您可以在使用标题下看到如何使用集合。

所以,在你的Travel模型中,你需要一个范围(或者,一个类方法返回ActiveRecord::Relation

class Travel < ActiveRecord::Base
  scope :actives, where(status: 'active')
end

然后在 ActiveAdmin表单中,您可以在:collection选项上使用该范围

form do |f|
  f.inputs "a nice title" do
    f.input :travel_id, as: :select, collection: Travel.actives
  end
end

也许您需要格式化范围结果。做这样的事情:

Travel.actives.map{|t| [t.name,t.id]}