1

好日子大家,軌道4處理區域的錯誤頁面

我用Rails 4,在我的網站,我使用下面的鏈接處理場所:

恩 - http://www.sample.com/XXXXX
zh-香港 - http://www.sample.com/zh-HK/XXXXX
ZH-CN - http://www.sample.com/zh-CN/XXXXX

此外,我使用自定義錯誤頁的方法來處理404,4 22和500錯誤。 即

配置/ routes.rb中

scope "(:locale)", :locale => /en|zh-CN|zh-HK/ do 
    root 'home#index' 
    get '/' => 'home#index', as: :home_page 
    get 'about' => 'home#about', as: :about_page 
end 

%w(404 422 500).each do |code| 
    get code, :to => "errors#show", :code => code 
end 

get '/:locale' => 'home#index' 

配置/環境/ production.rb

Rails.application.configure do 
    config.exceptions_app = self.routes 
end 

應用程序/控制器/ application_controller.rb

class ApplicationController < ActionController::Base 
    before_filter :set_locale 

    def set_locale 
    I18n.locale = params[:locale] || I18n.default_locale 
    end 
end 

應用程序/控制器/ errors_controller.rb

class ErrorsController < ApplicationController 

    def show 
    render status_code.to_s, :status => status_code, :layout => false 
    end 

protected 

    def status_code 
    params[:code] || 500 
    end 

end 

****************這是我的問題。******************
當我鍵入它可以向我顯示自定義錯誤頁面,如http://www.sample.com/zh-HK/abc
模式中的錯誤鏈接。

但是,當我輸入錯誤的鏈接,如http://www.sample.com/abc
(沒有語言環境(實際上它應該是默認語言環境:en)),
這不會進入我的自定義錯誤頁面。
相反,它給我這樣一個錯誤頁面: Not my custom error page

我怎樣才能解決這個問題,這樣,當它使用的是默認的語言環境(這意味着鏈接的locale),它可以使用自定義錯誤頁?謝謝!

+0

你找到任何答案嗎? –

回答

0

嘗試重定向所有未匹配的路由默認的語言環境是這樣的:

scope "(:locale)", :locale => /en|zh-CN|zh-HK/ do 
    root 'home#index' 
    get '/' => 'home#index', as: :home_page 
    get 'about' => 'home#about', as: :about_page 
end 

%w(404 422 500).each do |code| 
    get code, :to => "errors#show", :code => code 
end 

root to: redirect("/en", status: 302), as: :redirected_root 
get "/*path", 
    to: redirect("/en/%{path}", status: 302), 
    constraints: {path: /(?!(en|zh-CN|zh-HK)})\/).*/}, 
    format: false