发布表单时出现以下错误:找不到没有 ID 的团队
我有以下帖子参数
{"utf8"=>"✓",
"_method"=>"put",
"authenticity_token"=>"knq4dG1U/5NJxMD6KYxfOpKd3CuOBHRlp6xCwdpwCnQ=",
"match"=>{"name"=>"latest match",
"date(1i)"=>"2013",
"date(2i)"=>"5",
"date(3i)"=>"19",
"teams_attributes"=>{"1368967240149"=>{"name"=>"Navi",
"id"=>"1"}}},
"commit"=>"Update Match",
"match_id"=>"2"}
模型:
team has_many :matchips
team has_many :matches :through => matchips
match has_many :matchips
match has_many :teams :through => matchips
团队控制器:
def create
@team = Team.find(params[:team_id]) <-----fails here!
redirect_to @match
end
形式:
<%= nested_form_for @match, :url => {:action => "add_team_to_match_post"} do |f| %>
<% if @match.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@match.errors.count, "error") %> prohibited this match from being saved:</h2>
<ul>
<% @match.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :date %><br />
<%= f.date_select :date %>
</div>
<%= f.fields_for :teams, :html => { :class => 'form-vertical' } do |builder| %>
<%= builder.label "Team Name:" %>
<%= builder.autocomplete_field :name, autocomplete_team_name_teams_path, :update_elements => {:id => "##{form_tag_id(builder.object_name, :id)}" },:class => "input-small",:placeholder => "Search" %>
<%= builder.hidden_field :id %>
<% end %>
<%= f.link_to_add raw('<i class="icon-plus-sign"></i>'), :teams, :class => 'btn btn-small btn-primary' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
所以我基本上在比赛和球队之间有一个多对多的关系。使用nested_form 进行匹配,但问题是它在创建或更新之前寻找关联,我想要它。我以前使用多对一关联完成此操作,其中在创建或更新父模型时将创建子模型,在这种情况下,我已经拥有团队,我所做的就是通过 post/put 请求传递 id 和 name所以我可以把它和那场比赛联系起来。
如果有更好的方法来关联已创建的实体,请告诉我。