2017-04-08 12 views
0

5.0をレールにアップデートした後、私は次のエラーを取得しています "レンダリングおよび/またはリダイレクトがこのアクション内で複数回呼ばれていました":Railsの5 -

「AbstractController :: DoubleRenderError RegistrationsController#では

を作成

レンダリングまたはリダイレクトは、このアクションで複数回呼び出されました。レンダリングまたはリダイレクトを呼び出すことができますが、アクションごとに最大で1回だけ呼び出すことができます。リダイレクト後にアクションを終了するには、「reditect_to(...)」と「return」のような処理が必要です。

これは私の更新の前に働いていた私のコードです:

def create 
    # save record 
    if params[:stuff].nil? 
    respond_to do |format| 
     format.js 
    end 
    else 
    redirect_to root_path 
    end 
end 

私は例えば、異なる構文の多くを試してみた:

redirect_to(root_path) and return 

redirect_to(root_path) 
return 

return and redirect_to(root_path) 

return redirect_to(root_path) 

しかし、すべては同じエラーを返します。誰でも正しい構文を知っていますか?

+0

アクションに他の 'redirect_to'または' render'がありますか?これを試してください: 'return redirect_to(root_path)'。 – Gerry

+0

@Gerry私は完全な行動を加えました。そのコードはどちらも動作しません。 –

+0

他の 'redirect_to'や' render'は存在しないので、私は 'byebug'を使って、あなたのコードがその2番目のレンダリングを呼び出す場所を見つけることを提案します。 – Gerry

答えて

2

#が表示されている場所でレンダリングまたはリダイレクトしている可能性があります。あなたはすでに、それがインストールされている、それをインストールするにはbundleを実行して、あなたのcreate方法の開始にbyebugを追加Railsの

  • を再起動しない場合

    • あなたのGemfileにgem byebugを追加
    • が、これは試してみてください

    • ブラウザまたはコマンドラインからcreateを呼び出し、nsを実行して、他の機能にステップインします。レンダリングに気付くか、リダイレクトが2回呼び出されます。
  • +0

    私は自分のアクションで 'render'や' redirect_to'のインスタンスを使用していません。 –

    0

    performed?を使用して、ダブルレンダー/リダイレクトをテストまたはデバッグできます。