大家好日子,
我正在使用Rails 4,在我的网站中,我使用以下链接来处理区域设置:
en - http://www.sample.com/XXXXX
zh-HK - http://www.sample.com/zh-HK/XXXXX
zh-CN - http://www.sample.com/zh-CN/XXXXX
此外,我使用自定义错误页面方法来处理404,422和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)),
这不会转到我的自定义错误页面
相反,它给我一个这样的错误页面:
如何解决这个问题,以便在使用默认语言环境时(这意味着链接中没有语言环境),它可以使用自定义错误页面?谢谢!
答案 0 :(得分:1)
尝试将所有不匹配的路由重定向到默认语言环境,如下所示:
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