Domanda

Ho cercato e provato un sacco, ma non riesco a realizzarlo come voglio .. ecco il mio 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 campi aggiuntivi, come quantity. Stiamo lavorando sui punti di vista per 'bill'. Grazie a Formtastic per semplificare il tutto rapporto semplicemente scrivendo

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

E ho una vera e propria bella lista casella di controllo. Ma quello che non ho trovato finora è: come posso usare i campi aggiuntivi da 'movingresource', successiva o sotto ogni casella miei campi desiderati da quel modello

?

Ho visto approcci differenti, soprattutto con loop manualmente attraverso una serie di oggetti e creando le forme appropriate, utilizzando: in un parte form.inputs, oppure no. Ma nessuna di queste soluzioni erano pulite (ad esempio, ha lavorato per la vista di modifica, ma non per i nuovi perché gli oggetti richiesti non sono stati costruiti o generati e li genera causato un disastro).

Voglio sapere le vostre soluzioni per questo!

È stato utile?

Soluzione

Va bene, ho perso la rivoluzione del accepts_nested_attributes_for, questo spiega perché non è davvero lavorando.

Questo mi ha fatto un grande passo avanti, ma credo che da qualche parte io ancora avere alcune complicazioni con le mie relazioni complesse ^ _ ^

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 %>

Altri suggerimenti

di Formtastic: aiuto potrebbe opzione label_method. Per es.

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

o

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

Se i campi non esistono nella nuova vista, si può solo test se è nuovo ( new_record? ) e presentare un diverso insieme di campi (se si avvolge in un parziale nel barattolo essere un approccio piuttosto pulito).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top