2011-08-04 10 views
2

レールで:AbstractController :: DoubleRenderError私は常に次のエラーを取得する3

AbstractController::DoubleRenderError (Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".):

それはidは二度目最初ではなくnilのときにエラーが、発生した...

def calc_next 
    id = next() 
    if id.nil? 
    id = next_next() 
    if id.nil? 
     render :layout => false, :format => :js 
    else 
     redirect_to :action => "view", :id => id, :format => :js 
    end 
    else 
    redirect_to :action => "view", :id => id, :format => :js 
    end 
end 

このリダイレクションで問題は見えません。外側のものは問題ありません。でも、デバッガで2つのリダイレクションが同時に存在していない...

すべてのヘルプは高く評価され... マルクス

答えて

3

これは、ヘルパー関数のいくつかの種類ではなく、コントローラのアクションのように見えます。その場合は、おそらく1回のアクションでcalc_nextを2回呼び出すか、同じアクションの他の場所からrender/redirect_toを呼び出すことになります。 renderredirect_toがありません。はすぐにコントローラを返すことを忘れないでください。

制御パスがcalc_nextを呼び出し、renderまたはredirect_toを別の場所から(またはcalc_nextへの2番目の呼び出しから)呼び出すことができるかどうかを確認します。

あなたが通過しているコントローラーアクションを投稿すると、より効果的に役立つかもしれません。

+0

クールを返す を返すが、おかげで、あなたは私の正確な右のヒントを与えた、next_next()関数は、リダイレクトを持っていましたアクションはすでに統合されています... – Markus

0

レンダリングまたはリダイレクトする可能性があるbefore_filterがありますか?

0

あなたはまた、2つのオプションがあります。...

リダイレクトをして...レンダリングと

関連する問題