2012-08-16 12 views
5

Ich habe diese Assoziationen:ActiveAdmin das Formular für die Anpassung 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 

Nun würde Ich mag die ActiveAdmin Form für „Anmelden“ gestalten, so dass es zeigt den Titel der Kurse und den Namen der Nutzer als Auswahl und nicht als Textfeld.

Das Standardformular tut dies bereits, aber ich muss das Formular weiter anpassen und ich kann das Standardformular nicht reproduzieren.

Antwort

6

Ihr Formular Block wird in Ihrem wie folgt aussehen admin/signups.rb:

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

standardmäßig, da course und user Verbände sind, sollte dies Ihnen eine collection_select - das heißt, eine mit dem name Attribut Ihrer Modelle als Etiketten, id s als Werte. Wenn Sie Ihren Eingabetyp input übergeben haben, werden sie gezwungen, diesen Typ anzuzeigen. geben Sie

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

Das wird nur ein course_id Texteingabefeld, in dem Sie werden wahrscheinlich nur die ID für das zugehörige Objekt ein. Um das Standardformular zu reproduzieren, fügen Sie einfach input s für die relevanten Attribute hinzu. Sie können sie sogar in f.inputs einpacken, um sie zu gruppieren und Dinge hübsch aussehen zu lassen.

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