2011-11-10 5 views
6

私はAPIキーの有効性をチェックするbefore_filterを持っています。キーが無効な場合は、ヘッダーのみの403応答を表示したいと思います。私のコントローラでRails3 - レンダリングする方法403 with before_filter DoubleRenderエラーなし

before_filter :validate_api 
... 
def validate_api 
    if params[:api_key].present? and ApiKey.find(params[:api_key]) 
    return true 
    else 
    render head :forbidden 
    end 
end 

問題は、私はRailsがアクションに入り、とにかくレスポンスをレンダリングしようとし、おそらくとき、DoubleRenderエラーを取得していることです。 before_filterがレンダリングまたはリダイレクトされた場合、Railsがアクションの実行を妨げることは私の理解であった。そうじゃないの?

before_filterでヘッダーのみの応答をレンダリングし、アクションが実行されないようにするにはどうすればよいですか?

答えて

12

else部分にfalseを返そうとしましたか?

+0

はい、同じ結果です。 DoubleRenderエラー。 –

+15

ああ、待っています。何が起こっているのか見てみましょう。 'head:forbidden'を呼び出すだけでよいので、' render'部分を前に置いてください。 – Kris

関連する問題