ruby – rails post params没有找到id
发布时间:2020-12-17 02:34:32 所属栏目:百科 来源:网络整理
导读:发布表单时收到以下错误:找不到没有ID的团队 我有以下帖子参数 {"utf8"="?","_method"="put","authenticity_token"="knq4dG1U/5NJxMD6KYxfOpKd3CuOBHRlp6xCwdpwCnQ=","match"={"name"="latest match","date(1i)"="2013","date(2i)"="5","date(3i)"="19","te
发布表单时收到以下错误:找不到没有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和名称所以我可以将它与那场比赛联系起来. 如果有更好的方法来关联已创建的实体,请告诉我. 解决方法
你可能需要这样的东西:
def add_team_to_match_post @match = Match.find(params[:match_id]) params[:teams_attributes].each_value do |team_attributes| team = Team.find(team_attributes[:id]) @match.teams << team team.matches << @match end redirect_to @match end 基本上,这是遍历teams_attributes哈希中的每个团队并将其添加到匹配对象(因为这是多对多) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |