11203


タイトル通りなのですが、railsで存在しないページにアクセスが有った場合に特定のページヘリダイレクトをかけるにはどうすればよいのでしょうか？

ActionControllerに下記のコードを追加してみたのですが、正しく動作しませんでした。

[code]

    rescue_from ActionController::RoutingError, ActiveRecord::RecordNotFound, with: :render_404
    def render_404
      render action: "works"
    end  
    
[/code]

上記のApplicationControllerで制御する方法以外にも解決する方法などございましたら教えていただきたいです。


CC BY-SA 3.0
2015-06-09T22:58:56.013
11197
2015-06-10T04:52:35.740
5840
question
ruby-on-rails
rails4で存在しないページにアクセスが有った時に特定のページヘリダイレクトしたい。


`redirect_to` を利用します。

[code]

    def render_404
      redirect_to xxx_url
    end
    
[/code]


CC BY-SA 3.0
2015-06-10T00:55:37.500
11200
2015-06-10T00:55:37.500
76
11197
answer


rescueする内容にMissingTemplateを追加すればよろしいかと。

[code]

    rescue_from ActionView::MissingTemplate, with: :render_404
    def render_404
     render template: 'errors/error404', status: 404
    end
    
[/code]

後、config/routes.rbにルーティングエラーを捕捉する処理を追加。

[code]

    get '*unmatched_route', to: 'application#render_404'
    
[/code]

とすればview/errors/error404.html.erbが表示されます。エラー番号に合わせてカスタマイズしたエラーページを表示する方法です。


CC BY-SA 3.0
2015-06-10T04:52:35.740
11203
2015-06-10T04:52:35.740
9202
11197
answer