rails 3从嵌套模型中选择控件

时间:2013-01-02 01:50:10

标签: ruby-on-rails-3

我有两个模型用户和团队。一个团队可以拥有许多用户,每个用户都属于一个团队。

team_id是我的用户表中的一列fk。

我希望在我的创建用户表单上有一个选择下拉列表,其中包含我的所有团队team_id。

此代码执行我想要的但是

 <%= f.fields_for :teams do |builder| %>
    <p>
        <%= f.label :team_id, "Select Team For User" %>
        <%= builder.collection_select :team_initials, Team.all, :id, :team_initials %>
    </p>
<% end %>

它不会尝试将id值添加到用户。这是错误

    Parameters:
{"utf8"=>"✓",
 "authenticity_token"=>"xxxxx",
 "user"=>{"name"=>"brand new",
 "email"=>"test1@test.com",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]",
 "teams"=>{"team_initials"=>"27"}},
 "commit"=>"Create my account"}

它抱怨它无法添加到团队模型中。

我想要做的就是为我的创建用户表单获取所有现有团队的ID,这样当您为用户创建时,您可以选择该用户团队。

我上面有team_initials的原因是我尝试使用更友好的用户字段进行选择但仍然是用户团队ID作为值。

1 个答案:

答案 0 :(得分:0)

我认为你走在正确的轨道上。 fields_for机制用于设置关联模型中的值。我认为你所要做的就是建立联系。

所以你可能会丢失fields_for行,然后是本节:

builder.collection_select :team_initials, Team.all, :id, :team_initials

应该是:

f.collection_select :team_id, Team.all, :id, :team_initials

我在这里寻找关于collection_select的信息,因为我不知道它在我的头顶: http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

我认为这会将此参数从"teams"=>{"team_initials"=>"27"}},更改为"team_id"=>"27",

我希望能解决它。