0

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

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 作为值。

4

1 回答 1

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",

我希望能解决它。

于 2013-01-04T00:28:49.220 回答