2012-08-16 8 views
5

tengo estas asociaciones:ActiveAdmin la personalización de la forma de 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 

Ahora, me gustaría personalizar el formulario ActiveAdmin para "inscribirse", por lo que muestra el título de los cursos y el nombre de los usuarios como selección y no como campo de texto.

El formulario predeterminado ya lo hace, sin embargo, tengo que personalizar más el formulario y no puedo reproducir el formulario predeterminado.

Respuesta

6

Su forma de bloque se verá algo como esto en su admin/signups.rb:

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

por defecto, ya course y user son asociaciones, esto debe darle una collection_select - es decir, una con el atributo name de su modelos como etiquetas, id s como valores. Si pasó su input s un tipo de entrada, esto los obligará a mostrarse como ese tipo.

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

Esto sólo te dará un campo de entrada de texto course_id, donde es probable que acaba de introducir el ID de objeto asociado. Para "reproducir el formulario predeterminado", simplemente continúe agregando input s para los atributos relevantes. Incluso puede envolverlos en f.inputs para agruparlos y hacer que las cosas se vean bonitas.

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