2012-09-29 47 views
0

我有一个简单的嵌套表单使用'nested_form'gem。如何预先填充嵌套表单域

它看起来像这样:

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

现在我想预填在我的新行动的领域。虽然用@user.username = "someone"填充用户名字段很容易,但我不知道如何访问嵌套“team_form”中的第一个嵌套字段“team_name”。

在HTML领域看起来是这样的:

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

任何想法如何预填此嵌套领域?

回答

2

通常build可以在你的控制器用于此(因为它不会导致@user对象的save,在@user对象上追加新Team实例的:teams集合。在你的行动

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

其中...包含@user.teams.first将显示在嵌套表格的默认属性。

+0

该作品...非常感谢! – flyte321

+0

@Deefour会@ user.teams.build()达到同样的目的吗? – lulalala

+0

是的,这是正确的。 – deefour