質問

これは私のソースコードです。

 def update
    @recipe = Recipe.find(params[:id])

    respond_to do |format|
      if @recipe.update_attributes(params[:recipe])
        format.html {redirect_to :action => "edit" }
      end
    end
  end

私は、この行にエラーが発生します。

respond_to do |format|

とエラーメッセージが「あなたはそれを期待していなかったときは、nilのオブジェクトを持っている。nil.callの評価中にエラーが発生しました」です。

スタックトレースから5行である次のように

/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:175:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `each'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:173:in `respond'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/mime_responds.rb:107:in `respond_to'
/Path from my machine to the app/app/controllers/recipes_controller.rb:43:in `update'

私はこれをデバッグすると私は、このエラーが発生することができます方法を理解することはできませんどのようには考えている。

すべてのヘルプは本当に感謝されます。

おかげ

役に立ちましたか?

解決

あなたは非HTMLクライアントに応答しない場合、あなたはrespond_toを使用する必要はありません。

にメソッドを変更してみてください

  if @recipe.update_attributes(params[:recipe])
   redirect_to :action => "edit"
  end
それが動作する場合、それはあなたのアプリケーションのMIMEタイプの設定のどこかにあるように、

、エラーが見えます。

他のヒント

あなたはyieled の形式のオブジェクトを使用しないとき

この不可解なエラーが表示されます。 update_attributes呼び出しが失敗したときに実際には、あなたが本当にレンダリング例えば、何かを行う必要があります。の編集のテンプレートます:

  def update
    @recipe = Recipe.find(params[:id])

    respond_to do |format|
      if @recipe.update_attributes(params[:recipe])
        format.html { redirect_to [:edit, @recipe] }
      else 
        format.html { render :template => 'edit' }
      end
    end
  end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top