加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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哈希中的每个团队并将其添加到匹配对象(因为这是多对多)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读