ActiveAdmin自定义belongs_to的表单

Luí*_*lho 6 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
Run Code Online (Sandbox Code Playgroud)

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

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

Edd*_*gan 8

您的表单块在您的内容中将如下所示admin/signups.rb:

form do |f|
    f.input :course
    t.input :user
end
Run Code Online (Sandbox Code Playgroud)

默认情况下,由于courseuser是关联,这应该给你一个collection_select- 即,name模型的属性作为标签,ids作为值.如果您已经传递了inputsa输入类型,则会强制它们显示为该类型.

form do |f|
    f.input :course, :as => :string
end
Run Code Online (Sandbox Code Playgroud)

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

form do |f|
    f.inputs "Basic Details" do
        f.input :course
        f.input :user
    end
end
Run Code Online (Sandbox Code Playgroud)