0

既存のチームを「編集」するために使用しているフォームがあります。ビューは次のとおりです。

/app/views/teams/edit.html.erb

<%= semantic_form_for @team do |f| %>

  <%= f.inputs %>
  <%= f.actions %>

<% end %>

そして、ここにコントローラーのコードがあります:

/app/controllers/teams_controller.rb

  def edit
    @team = Team.find(params[:id])
  end

  def update
    if @team.update_attributes(params[:team])
      redirect_to @team
    else
      render 'edit'
    end
  end

ただし、/teams/1/edit に移動してチームの名前を変更し、[更新] をクリックしてフォームを送信すると、エラーが発生します: undefined method `update_attributes' for nil:NilClass

コントローラーの更新メソッドの開始時に、次のことを行いました。

raise @team.inspect

@team が更新メソッドで検査されたのを見て、私の疑いは正しかったことが証明されました。それは nil でした (つまり、値が渡されませんでした)。

ここで私がどこで間違っているのか誰か知っていますか?

ありがとうございました。

4

1 に答える 1

1

問題は、使用する前に更新アクションで @team を定義する必要があることです。次の行をアクションの先頭に追加するだけです。

@team = Team.find(params[:id])
于 2012-09-13T10:34:22.230 に答える