Frage

Ich suchte und versuchte viel, aber ich kann es nicht erreichen, wie ich will .. also hier ist mein Problem.

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 enthält zusätzliche Felder, wie quantity. Wir arbeiten an den Ansichten für ‚Rechnung‘. Dank formtastic das ganze Beziehung, was nur durch Schreiben zu vereinfachen

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

und ich bekomme eine nette Checkbox-Liste. Aber was ich bisher nicht herausgefunden, ist: Wie kann ich die zusätzlichen Felder aus ‚movingresource‘ verwende, neben oder unter jedem Checkbox meiner gewünschten Felder aus diesem Modell

?

Ich sah verschiedene Ansätze, vor allem mit manuell durch eine Reihe von Objekten, Looping und die entsprechenden Formulare erstellen, mit: in einem form.inputs Teil, oder nicht. Aber keine dieser Lösungen waren sauber (zum Beispiel für die Bearbeitungsansicht gearbeitet, aber nicht für neue, weil die erforderlichen Objekte wurden nicht gebaut oder erzeugt und zum Erzeugen von ihnen verursachten ein Chaos).

Ich möchte Ihre Lösungen für das wissen!

War es hilfreich?

Lösung

Okay, ich vermisste die Revolution von accepts_nested_attributes_for, das erklärt, warum es nicht wirklich funktioniert.

Das hat mir einen großen Schritt weiter, aber ich denke, irgendwo werde ich noch einige Komplikationen mit meinen komplexen Beziehungen habe ^ _ ^

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

Andere Tipps

Formtastic suchen: label_method Option könnte helfen. Z.

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

oder

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

Wenn die Felder in der neuen Ansicht nicht vorhanden sind, können Sie einfach testen, ob es neu ist ( new_record? ) und präsentieren einen anderen Satz von Feldern (wenn Sie in einen Teil wickeln in Dose sein ziemlich sauber Ansatz).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top