ActiveAdmin自定义belongs_to的表单

时间:2012-08-16 23:32:38

标签: ruby-on-rails activeadmin

我有这些联想:

class Course < ActiveRecord::Base
  has_many :signup
  has_many :user, :through => :signup

  accepts_nested_attributes_for :signup
end

class User < ActiveRecord::Base
  has_many :signup
  has_many :course, :through => :signup

  accepts_nested_attributes_for :signup
end

class Signup < ActiveRecord::Base
  belongs_to :course
  belongs_to :user
end

现在,我想为“注册”自定义ActiveAdmin表单,因此它显示课程的标题和用户的名称作为选择而不是文本字段。

默认表单已经这样做,但我需要进一步自定义表单,我无法重现默认表单。

1 个答案:

答案 0 :(得分:8)

您的表单块在admin/signups.rb

中看起来像这样
form do |f|
    f.input :course
    t.input :user
end

默认情况下,由于courseuser是关联,因此应该为您提供collection_select - 也就是说,将模型的name属性作为标签, id作为值。如果您已经传递了input输入类型,则会强制它们显示为该类型。

form do |f|
    f.input :course, :as => :string
end

这只会给你一个course_id文本输入字段,你可能只需要输入相关对象的ID。要“重现默认表单”,只需继续为相关属性添加input s即可。您甚至可以将它们包裹在f.inputs中以对它们进行分组并使其看起来很漂亮。

form do |f|
    f.inputs "Basic Details" do
        f.input :course
        f.input :user
    end
end