recursos rails formularios form anidados active ruby-on-rails ruby-on-rails-3 belongs-to activeadmin

ruby-on-rails - formularios - nested form rails



Formulario anidado en active_admin con opciĆ³n de seleccionar o crear (4)

He encontrado que necesitas hacer 3 cosas.

  1. Añadir campos semánticos para el formulario.

f.semantic_fields_for :publisher do |j| j.input :name end

  1. Agregue una declaración nested_belongs_to al controlador

controller do nested_belongs_to :publisher, optional: true end

  1. Actualice sus parámetros permitidos en el controlador para aceptar los parámetros, utilizando los atributos de palabras clave

permit_params publisher_attributes:[:id, :name]

Espero que esto ayude.

Estamos utilizando active_admin para nuestro backend de administración.

Tenemos un modelo "Aplicación" que: corresponde a modelo "Editor":

class App < ActiveRecord::Base belongs_to :publisher end class Publisher < ActiveRecord::Base has_many :apps end

Al crear una nueva entrada para el modelo de "Aplicación" quiero tener la opción de seleccionar un editor existente o (si el editor aún no está creado) crear un nuevo editor en la misma forma (anidada) (o al menos sin saliendo de la pagina).

¿Hay una manera de hacer esto en active_admin?

Esto es lo que tenemos hasta ahora (en admin / app.rb):

form :html => { :enctype => "multipart/form-data" } do |f| f.inputs do f.input :title ... end f.inputs do f.semantic_fields_for :publisher do |p| # this is for has_many assocs, right? p.input :name end end f.buttons end

Después de horas de búsqueda, agradecería cualquier pista ... ¡Gracias!


La clase form_builder soporta un método llamado has_many .

f.inputs do f.has_many :publisher do |p| p.input :name end end

Eso debería hacer el trabajo.

Actualización: releí su pregunta y esto solo permite agregar un nuevo editor, aunque no estoy seguro de cómo seleccionar o crear.


Primero, asegúrese de que en su modelo de Publisher tenga los permisos correctos para el objeto asociado:

class App < ActiveRecord::Base attr_accessible :publisher_attributes belongs_to :publisher accepts_nested_attributes_for :publisher, reject_if: :all_blank end

Luego en su archivo ActiveAdmin:

form do |f| f.inputs do f.input :title # ... end f.inputs do # Output the collection to select from the existing publishers f.input :publisher # It''s that simple :) # Then the form to create a new one f.object.publisher.build # Needed to create the new instance f.semantic_fields_for :publisher do |p| p.input :name end end f.buttons end

Estoy usando una configuración ligeramente diferente en mi aplicación (una relación has_and_belongs_to_many), pero logré que funcionara para mí. Avísame si este código produce algún error.