flyte321
flyte321

Reputation: 420

How to prefill nested form fields

I have a simple nested form using the 'nested_form' gem.

It looks like this:

<%= nested_form_for @user do |f| %>

  <%= f.text_field :username, :size => 25 %>

<%= f.fields_for :teams do |team_form| %>
  <%= team_form.label :team_name, 'Name of your team' %>

<% end %>
<%= f.submit :value =>'submit' %>
<% end %>

Now I want to prefill the fields in my new-action. While it's easy to fill the username-field with @user.username = "someone" I have no idea how to access the first nested field "team_name" in the nested "team_form".

In the html the field looks like this:

<input id="user_teams_attributes_0_team_name" type="text" name="user[teams_attributes][0][team_name]">

Any ideas how to prefill this nested field?

Upvotes: 0

Views: 1335

Answers (1)

deefour
deefour

Reputation: 35370

Typically build can be used for this in your controller (as it doesn't cause a save on the @user object), appending new Team instances to the :teams collection on the @user object. In your action

@user = User.new
@user.teams = [ Team.build(...) ]

where ... contains the default attributes for @user.teams.first that will be displayed in the nested form.

Upvotes: 2

Related Questions