我有两个模型用户和团队。一个团队可以拥有许多用户,每个用户都属于一个团队。
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作为值。
答案 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",
我希望能解决它。