2012-08-16 80 views
5

我有这些协会的形式:ActiveAdmin定制的belongs_to的

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形式,所以它显示了课程的标题和用户名作为选择而不是文本框。

默认窗体已经这样做了,但是我需要进一步自定义窗体,我无法重现默认窗体。

回答

6

您的形式块将看起来像这样在你的admin/signups.rb

form do |f| 
    f.input :course 
    t.input :user 
end 

默认情况下,因为courseuser有关联,这应该给你一个collection_select - 即用的name属性您模型作为标签,id s作为值。如果你已经通过你的input输入类型,这将强制它们显示为该类型。

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

这将只是给你一个course_id文本输入框,在这里你可能只需要输入ID为关联对象。要“重现默认形式”,只需继续为相关属性添加input即可。你甚至可以将它们包装在f.inputs中,以将它们分组并使事物看起来很漂亮。

form do |f| 
    f.inputs "Basic Details" do 
     f.input :course 
     f.input :user 
    end 
end 
相关问题