Pregunta

Me buscó y trató mucho, pero no puedo lograrlo ya que quiero .. así que aquí está mi problema.

class Moving < ActiveRecord::Base
  has_many :movingresources, :dependent => :destroy
  has_many :resources, :through => :movingresources
end

class Movingresource < ActiveRecord::Base
  belongs_to :moving
  belongs_to :resource
end

class Resource < ActiveRecord::Base
  has_many :movingresources
  has_many :movings, :through => :movingresources
end

Movingresources contiene campos adicionales, como quantity. Estamos trabajando en las vistas para 'factura'. Gracias a Formtastic para simplificar todo el asunto relación con sólo escribir

<%= form.input :workers, :as => :check_boxes %>

y me da una verdadera lista de casilla agradable. Pero lo que no he encontrado hasta ahora es: ¿Cómo puedo usar los campos adicionales de 'movingresource', al lado o debajo de cada casilla mis campos deseados de ese modelo

?

vi diferentes enfoques, principalmente con bucle manualmente a través de una matriz de objetos y la creación de las formas apropiadas, usando: para en una parte form.inputs, o no. Pero ninguna de esas soluciones estaban limpios (por ejemplo trabajado para la vista de edición pero no para la nueva porque los objetos requeridos no se construyeron o se generan y la generación de ellos causó un desastre).

Quiero saber sus soluciones para esto!

¿Fue útil?

Solución

De acuerdo, se perdió la revolución de accepts_nested_attributes_for, esto explica por qué no es realmente de trabajo.

Esto me consiguió un gran paso adelante, pero creo que en algún lugar todavía voy a tener algunas complicaciones con mis relaciones complejas ^ _ ^

class Moving < ActiveRecord::Base
    has_many :movingworkers, :dependent => :destroy
    has_many :workers, :through => :movingworkers
    accepts_nested_attributes_for :movingworkers
end


<% form.inputs :for => :movingworkers do |movingworker| %>
    <%= movingworker.inputs :worker, :quantity %>
<% end %>

Otros consejos

de Formtastic: label_method opción podría ayudar. Por ejemplo.

<%= form.input :movingworkers, :label_method => :worker %>

o

<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>

Si no existen los campos en el nuevo punto de vista, se puede simplemente prueba si es nuevo ( new_record? ) y presentar un conjunto diferente de los campos (si es que se coloca en un parcial en la lata ser un enfoque bastante limpio).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top