Schienen - Mit form_for und fields_for, wie Sie den Zugriff auf die sub-Objekt, während in der fields_for block?
In meinem ersten rails-app, die ich versuche zu verwenden form_for
und fields_for
erstellen Sie eine verschachtelte Objekt-form. So weit So gut, aber ich kann nicht herausfinden, wie Zugriff auf die sub-Objekt, während in der fields_for
block. Ich habe bereits aufgefüllt, ein Feld, in das sub-Objekt mit Daten, die ich zeigen möchte, in der Gebrauchsanweisung.
Modelle
Garage:
has_many :cars, :dependent => :destroy
accepts_nested_attributes_for :cars
Auto:
belongs_to :garage
Garage-Controller
def new
@garage = Garage.new
for i in 1..5
@garage.cars.build :stall_number => i
end
end
_form.html-Code.erb
<%= form_for @garage do |f| %>
<%= f.label :title, "Garage Name" %><br />
<%= f.text_field :title %>
<% f.fields_for :cars do |builder| %>
<p>Enter license for car parked in stall: <%= car.stall_number %></p>
<%= f.label :license, "License #:" %><br />
<%= f.text_field :license %>
<%= end %>
<%= end %>
Wie Sie sehen können, innerhalb des builder-block für :Autos, die ich zeigen will, in meiner Bedienungsanleitung, Bereich: car.stall_number
(gefüllt in meinem controller mit einem integer):
<p>Enter license for car parked in stall: <%= car.stall_number%></p>
Ich habe versucht viele verschiedene Ideen: @car.stall_number
object.car.stall_number
usw. Keine Freude. Mehrere sucht und ein Blick auf die fields_for
source-code noch nicht geholfen, mein Verständnis. Ich würde schätzen jede Beratung.
Update: Für die Klärung, pro Dan ' s Vorschlag habe ich versucht builder.stall_number
führt jedoch zu einer
NoMethodError: undefined method 'stall_number' for #<ActionView::Helpers::FormBuilder:0x00000102a1baf0>
InformationsquelleAutor der Frage Don Leatham | 2011-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nur mit behandelt werden, dies heute mich.
Können Sie den Zugriff auf das Objekt der fields_for durch:
wo-generator ist Ihre fields_for form builder-Objekt. In Ihrem speziellen Fall, können Sie sagen:
Sollte es für Sie tun!
InformationsquelleAutor der Antwort CharlieMezak
So, wie Sie sind versucht, funktioniert nicht, weil Sie zugreifen möchten
car
ohne Füllung, die variable für die Daten.Ich denke, Sie wollen, um mehrere Blöcke von Ständen, wo Sie eingeben können Nummernschilder. Für jeden stall, Sie müssen Ihre eigenen
fields_for
.Ich würde vorschlagen, etwas wie:
Innerhalb der fields_for, müssen Sie das form-Objekt definieren Sie, in diesem Fall-generator. Da die Daten dort sind nicht abgebildet, um die äußere form (f), sondern um die Autos-Objekt (generator).
InformationsquelleAutor der Antwort Dan