En mi primera aplicación de rieles estoy tratando de usar form_for
y fields_for
para crear un formulario de objeto anidado. Hasta aquí todo bien, pero no puedo entender cómo acceder al subobjeto en el bloque fields_for
. He rellenado previamente un campo en el subobjeto con los datos que quiero mostrar en las instrucciones del usuario.Rieles: al usar form_for y fields_for, ¿cómo se accede al subobjeto mientras se está en fields_for block?
Modelos
Garaje:
has_many :cars, :dependent => :destroy
accepts_nested_attributes_for :cars
Coche:
belongs_to :garage
Garaje controlador
def new
@garage = Garage.new
for i in 1..5
@garage.cars.build :stall_number => i
end
end
_form.html.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 %>
Como se puede ver, en el interior del bloque constructor para: coches, quiero mostrar, en mis instrucciones para el usuario, el campo: car.stall_number
(ocupado en mi controlador con un entero):
<p>Enter license for car parked in stall: <%= car.stall_number%></p>
he probado muchas ideas diferentes: @car.stall_number
, object.car.stall_number
, etc. No hay alegría. Varias búsquedas y un vistazo al código fuente fields_for
no han ayudado a mi comprensión. Agradecería cualquier orientación.
Actualización: Para mayor claridad, por sugerencia de Dan he tratado builder.stall_number
pero resulta en una
NoMethodError: undefined method 'stall_number' for #<ActionView::Helpers::FormBuilder:0x00000102a1baf0>
Referencia de este objeto a las relaciones están todas rotas @CharlieMezak –
¡Esto funcionó para mí! –