Rails: обновление вложенных атрибутов - неопределенный метод `to_sym 'для nil: nilclass

retive: Добавлено действие обновления и включено Какую линию возникает ошибка

Модель:

class Match < ActiveRecord::Base  
  has_and_belongs_to_many :teams
  has_many :match_teams
  has_many :teams, :through => :match_teams
  accepts_nested_attributes_for :match_teams, :allow_destroy => true
end

Контроллер:

  def new
    @match = Match.new
    @match_teams = 2.times do
      @match.match_teams.build
    end

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @match }
    end
  end

  def update
    @match = Match.find(params[:id])

    respond_to do |format|
      if @match.update_attributes(params[:match])
        format.html { redirect_to @match, notice: 'Match was successfully updated.' }
        format.json { head :ok }
      else
        format.html { render action: "edit" }
        format.json { render json: @match.errors, status: :unprocessable_entity }
      end
    end
  end

Вложенная модель:

class MatchTeam < ActiveRecord::Base
  belongs_to :match
  belongs_to :team
end

Ассоциация:

class Team < ActiveRecord::Base
  has_and_belongs_to_many :matches
end

Вид:

<%= form_for(@match) do |f| %>

  <%= f.fields_for :match_teams, @match_teams do |builder| %>
    <%= builder.collection_select :team_id, Team.all, :id, :name, :include_blank => true %>
  <% end %>

  <% unless @match.new_record? %>
    <div class="field">
      <%= f.label :winning_team_id %><br />
      <%= f.collection_select :winning_team_id, @match.teams, :id, :representation %>
    </div>
  <% end %>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Парами:

Processing by MatchesController#update as HTML
Parameters: {"utf8"=>"Ô£ô", "authenticity_token"=>"QIJChzkYOPZ1hxbzTZS8H3AXc7i
BzkKv3Z5daRmlOsQ=", "match"=>{"match_teams_attributes"=>{"0"=>{"team_id"=>"1", "
id"=>""}, "1"=>{"team_id"=>"3", "id"=>""}}, "winning_team_id"=>"3"}, "commit"=>"
Update Match", "id"=>"2"}

Создание нового совпадения с 2 командами работают нормально, Редактировать представление также показывает правильные значения, но действие обновления дает мне эту ошибку.

undefined method `to_sym' for nil:NilClass
app/controllers/matches_controller.rb:65:in `block in update'

line 65: if @match.update_attributes(params[:match])
5
задан Frexuz 11 September 2011 в 00:09
поделиться