Estoy tratando de resolver una tarea bastante común (como pensaba).Rails has_many a través de formulario con casillas de verificación y campo adicional en el modelo de unión
No tenemos tres modelos:
class Product < ActiveRecord::Base
validates :name, presence: true
has_many :categorizations
has_many :categories, :through => :categorizations
accepts_nested_attributes_for :categorizations
end
class Categorization < ActiveRecord::Base
belongs_to :product
belongs_to :category
validates :description, presence: true # note the additional field here
end
class Category < ActiveRecord::Base
validates :name, presence: true
end
Mis problemas comienzan cuando se trata de forma del producto/editar nuevo.
Al crear un producto, necesito verificar las categorías (mediante casillas de verificación) a las que pertenece. Sé que se puede hacer creando casillas con el nombre 'producto [category_ids] []'. Pero también necesito ingresar una descripción para cada una de las relaciones marcadas que se almacenarán en el modelo de unión (Categorización).
Vi esos hermosos Railscasts en formularios complejos, casillas de verificación de habtm, etc. He estado buscando StackOverflow apenas. Pero no he tenido éxito.
Encontré un post que describe casi exactamente el mismo problema que el mío. Y la última respuesta tiene algún sentido para mí (parece que es la forma correcta de hacerlo). Pero en realidad no está funcionando bien (es decir, si la validación falla). Quiero que las categorías se muestren siempre en el mismo orden (en formularios nuevos/de edición, antes/después de la validación) y casillas de verificación para permanecer donde estaban si falla la validación, etc.
Cualquier cosa apreciada. Soy nuevo en Rails (cambio desde CakePHP) así que sea paciente y escriba lo más detallado posible. Por favor, apúntame de la manera correcta!
Gracias. :)
muy bien hecho. me da la sensación de que puede haber una manera más fácil, sin embargo. – courtsimas
Muchas gracias por compartir, también tuve que complementar con http://stackoverflow.com/a/15920542/148421 porque mis valores no se guardaban y me faltaba cómo permitir los atributos anidados – Andrea