使用ActiveAdmin标签更改表单中关联的下拉菜单(formtastic语法)

时间:2014-01-28 00:50:34

标签: ruby-on-rails forms ruby-on-rails-4 activeadmin formtastic

关于ActiveAdmin / Formtastic的一个简单问题。 ActiveAdmin使用formtastic作为它的形式。

我在ActiveAdmin中注册了一个名为ClassSection的模型。这是app / admin / class_section.rb

ActiveAdmin.register ClassSection do

  permit_params :max_students, :min_students, :info, :class_course_id, :location_id

  form do |f|
    f.inputs "Details" do
      f.input :class_course
      f.input :min_students, label: "Minunum Students"
      f.input :max_students, label: "Maxiumum Students"
      f.input :location
    end
    f.inputs do
      f.input :info, label: "Additional Information"
    end
    f.actions
  end

end

注意f.input表格中的行:class_course。课程有几个成员:: name和:id_num。姓名是课程的标题(例如“诗歌入门”)。并且:id_num是课程编号(例如'ENG 101')。当前行为是一个下拉菜单,其中列出了class_course中的名称。相反,我想:id_num是下拉列表关联的东西。我可以在该行上设置一个选项来改变它吗?

以下是模型:

class ClassSection < ActiveRecord::Base
  belongs_to :class_course
  has_many :class_dates
  belongs_to :location
end

class ClassCourse < ActiveRecord::Base
  has_many :class_sections
end

这两个模型的架构:

create_table "class_courses", force: true do |t|
  t.string   "id_num"
  t.string   "name"
  t.text     "description"
  t.datetime "created_at"
  t.datetime "updated_at"
end

add_index "class_courses", ["id_num"], name: "index_class_courses_on_id_num"

create_table "class_sections", force: true do |t|
  t.integer  "class_course_id"
  t.integer  "min_students"
  t.integer  "max_students"
  t.integer  "location_id"
  t.text     "info"
  t.datetime "created_at"
  t.datetime "updated_at"
end

1 个答案:

答案 0 :(得分:1)

您可以对Formtastic中的f.input使用member_label选项以使其在目标模型上使用不同的方法生成下拉标签:

f.input :class_course, member_label: :id_num