2017-04-03 68 views
0

建立一個小應用程序,我想攔截錯誤頁面。Rails - 錯誤頁面控制器和重定向用戶?

是否有可能定義一個控制器,其中所有Rails的失敗頁面請求都會結束,以便我可以在其中添加自定義行爲?

+0

你可以利用救援從如特定錯誤'不found' –

+2

請不要惡意破壞你的帖子。 – Glorfindel

+0

@Glorfindel不這樣做,但我試圖刪除,它似乎並沒有工作。再編輯一些以使問題更具體。要放棄它,也許有人會回答。 – unmircea

回答

0

將這個在您的應用程序配置的底部/ routes.rb中

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

糾正我,如果我錯了,但我想挽救來自控制器的錯誤不會起作用,因爲該請求不是招」您還沒有擊中任何控制器,您可以執行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錯誤的幫助;因爲它們屬於特定控制器的路由模式。爲此,你可以在ApplicationController這樣添加rescue_from

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

    def foo 
    # redirect or do something 
    end 
end