我有这些联想:
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表单,因此它显示课程的标题和用户的名称作为选择而不是文本字段。
默认表单已经这样做,但我需要进一步自定义表单,我无法重现默认表单。
答案 0 :(得分:8)
您的表单块在admin/signups.rb
:
form do |f|
f.input :course
t.input :user
end
默认情况下,由于course
和user
是关联,因此应该为您提供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