I solved this using content_for. I put everything in the first
fields_for but the fields I wanted to move to a different partial, I
placed in the content_for block. See the example below.
Hope this helps,
Matt
# example
<%= f.fields_for :cars do |car_fields| %>
<div class="field">
<%= car_fields.label :color %><br />
<%= car_fields.text_field :color %><br />
</div>
<% content_for :plate_fields do %>
<div class="field">
<%= car_fields.label :plate %><br />
<%= car_fields.text_field :plate %><br />
</div>
<% end %>
<% end %>
====== <%# This can go anywhere... i.e. another partial %>
<%= content_for :plate_fields %>
On Aug 17, 11:40 pm, Matt Smith
<matthewcalebsm...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> With the following code and result below, why does the cars_attributes
> index (i.e. name=owner[cars_attributes][>>>0<<<][color])
increment in
> the second fields_for block when only one car is built? Shouldn''t
it
> stay the same because only one car was built?
>
> Is this standard behavior? If so, what is the standard way to force
> both indexes to be 0 (or increment together if there are more
> records)?
>
> This is an over-simplified example. The reason I want two fields_for
> blocks is due the arrangement of partials in another complex form.
>
> Much thanks!
>
> Matt
>
> # owners_controller.rb
> # ...
> def new
> @owner = Owner.new
> @owner.cars.build
>
> respond_to do |format|
> format.html # new.html.erb
> format.xml { render :xml => @owner }
> end
> end
> # ...
>
> # owner.rb
> class Owner < ActiveRecord::Base
> has_many :cars
> accepts_nested_attributes_for :cars
> end
>
> # car.rb
> class Car < ActiveRecord::Base
> belongs_to :owner
> end
>
> # new.html.erb
> <%= form_for(@owner) do |f| %>
> <% if @owner.errors.any? %>
> <div id="error_explanation">
> <h2><%= pluralize(@owner.errors.count, "error")
%> prohibited
> this owner from being saved:</h2>
>
> <ul>
> <% @owner.errors.full_messages.each do |msg| %>
> <li><%= msg %></li>
> <% end %>
> </ul>
> </div>
> <% end %>
>
> <div class="field">
> <%= f.label :name %><br />
> <%= f.text_field :name %>
> </div>
>
> <h2>Cars</h2>
>
> <%= f.fields_for :cars do |car_fields| %>
> <div class="field">
> <%= car_fields.label :color %><br />
> <%= car_fields.text_field :color %>
> </div>
> <% end %>
>
> ======>
> <%= f.fields_for :cars do |car_fields| %>
> <div class="field">
> <%= car_fields.label :plate %><br />
> <%= car_fields.text_field :plate %>
> </div>
> <% end %>
>
> <div class="actions">
> <%= f.submit %>
> </div>
> <% end %>
>
> #http://localhost:8081/owners/new
> # ...
> <h2>Cars</h2>
>
> <div class="field">
> <label
for="owner_cars_attributes_0_color">Color</label><br />
> <input id="owner_cars_attributes_0_color"
> name="owner[cars_attributes][0][color]" size="30"
type="text" />
> </div>
>
> ======>
> <div class="field">
> <label
for="owner_cars_attributes_1_plate">Plate</label><br />
> <input id="owner_cars_attributes_1_plate"
> name="owner[cars_attributes][1][plate]" size="30"
type="text" />
> </div>
> # ...
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.