2017-04-03 6 views
0

小さなアプリを作成して、エラーページを傍受したいと思います。Rails - エラーページのコントローラとユーザーのリダイレクト?

Railsのすべての失敗したページリクエストが終了してカスタムビヘイビアをそこに追加できるコントローラを定義することはできますか? routes.rbをアプリの設定の下部にある

+0

をあなたが 'あなたの投稿をvandalizeないでください –

+2

found'ないような特定のエラーからの救出を利用することができます。 – Glorfindel

+0

@ Glorfindelはそれをしていませんが、私は削除しようとしていて、それはうまく動作しません。質問をより具体的にするためにさらに編集しました。多分誰かが答えてくれるかもしれない。 upvoted答えを持っている、または は受け入れ答えを持っている、または は – unmircea

答えて

0

置き、これを/

match '*path', to: redirect('/'), via: :all 
0

私が間違っているんだけど、私は、要求が「hasnので動作しません、コントローラからのエラーを救出と思うなら、私を修正あなたがまだrescue_fromを行うために、どんなコントローラーにもヒットしません。 (ちょうど4.2.xでこれを試しました)

あなたのconfig/routes.rbには、他のすべての終わりにちょっとした種類のルートを追加する必要があります。これは、基本的に認識されないすべてのトラフィックをerrors#showアクションにルーティングします。

YourApp::Application.routes.draw do 
    # ... 
    # ... 
    get '*path', to: 'errors#show', via: :all 
end 

次に、ErrorsControllerとURLを解析する方法を作成します。

class ErrorsController < ApplicationController 
    def show 
    # parse the URL and redirect or simply render the page 
    end 
end 

上記はActiveRecord::RecordNotFoundエラーでは役に立ちません。特定のコントローラのルートパターンに入るためです。そのために、次のようなApplicationControllerrescue_fromを追加することができます。

class ApplicationController < ActionController::Base 
    rescue_from ActiveRecord::RecordNotFound, with: :foo 

    def foo 
    # redirect or do something 
    end 
end 
関連する問題