ruby on rails - table_for - ActiveAdmin se forma con has_many-¿Pertenece a relaciones?
activeadmin wiki (4)
Tengo los modelos Home y Photo, que tienen una relación has_many - corresponde_ a (una relación polimórfica, pero creo que eso no importa en este caso) Ahora estoy configurando un administrador activo y me gustaría que los administradores puedan agregar fotos a las casas desde el formulario de casas.
Las fotos son administradas por la gema CarrierWave, que no sé si hará que el problema sea más fácil o más difícil.
¿Cómo puedo incluir campos de formulario para un modelo diferente en el formulario Inicio de Administración Activa? ¿Alguna experiencia haciendo algo como esto?
class Home < ActiveRecord::Base
validates :name, :presence => true,
:length => { :maximum => 100 }
validates :description, :presence => true
has_many :photos, :as => :photographable
end
class Photo < ActiveRecord::Base
belongs_to :photographable, :polymorphic => true
mount_uploader :image, ImageUploader
end
Podrías probar esto:
form do |f|
f.semantic_errors # shows errors on :base
f.inputs # builds an input field for every attribute
f.inputs ''Photos'' do
f.has_many :photos, new_record: false do |p|
p.input :field_name
# or maybe even
p.input :id, label: ''Photo Name'', as: :select, collection: Photo.all
end
end
f.actions # adds the ''Submit'' and ''Cancel'' buttons
end
Además, puede consultar https://github.com/activeadmin/activeadmin/blob/master/docs/5-forms.md (ver Recursos anidados )
Prueba algo como esto en app / admin / home.rb:
form do |f|
f.inputs "Details" do
f.name
end
f.has_many :photos do |photo|
photo.inputs "Photos" do
photo.input :field_name
#repeat as necessary for all fields
end
end
end
Asegúrese de tener esto en su modelo de casa:
accepts_nested_attributes_for :photos
Modifiqué esto de otra pregunta de desbordamiento de pila: ¿Cómo usar ActiveAdmin en modelos que usan has_many a través de la asociación?
Supongo que está buscando un formulario para un modelo anidado. Echa un vistazo a los siguientes railscasts.
No puedo decirle mucho sobre active_admin, pero creo que esto no debería hacer una diferencia en el manejo del modelo anidado.
Tengo un modelo has_one, como este:
f.has_many :addresses do |a|
a.inputs "Address" do
a.input :street ... etc.
Si bien esto refleja correctamente nuestras asociaciones para la Address
(que es un modelo polimórfico) con f.has_one
falla. Así que cambié a has_many
y todo está bien. Excepto que ahora tenemos que evitar que nuestros usuarios creen varias direcciones para la misma entidad.