Ruby on rails 具有范围区域设置的rails路由

Ruby on rails 具有范围区域设置的rails路由,ruby-on-rails,ruby-on-rails-3,routing,locale,Ruby On Rails,Ruby On Rails 3,Routing,Locale,我已将另一种语言添加到我的应用程序中。因此,我对静态页面使用以下路径: scope "(:locale)", locale: /en|br/ do get "static_pages/about" match '/about', to: 'static_pages#about' ... end 它工作正常,因此: http://localhost:3000/en/about 但是,每次在语言之间切换时,它都会返回完整路径,而不是匹配: http://localhost:3000/

我已将另一种语言添加到我的应用程序中。因此,我对静态页面使用以下路径:

scope "(:locale)", locale: /en|br/ do
  get "static_pages/about"
  match '/about', to: 'static_pages#about'
  ...
end
它工作正常,因此:

http://localhost:3000/en/about
但是,每次在语言之间切换时,它都会返回完整路径,而不是匹配:

http://localhost:3000/en/static_pages/about
我切换语言的方式:

#links
<%= link_to (image_tag '/england.png'), url_for( locale: 'en' ) %>
<%= link_to (image_tag '/brazil.png'), url_for( locale: 'br' ) %>  

#application controller
before_filter :set_locale
def set_locale
  I18n.locale = params[:locale]
end

def default_url_options(options={})
  { locale: I18n.locale }
end
#链接
#应用程序控制器
在\u筛选器之前:设置\u区域设置
def set_语言环境
I18n.locale=params[:locale]
结束
def default_url_选项(选项={})
{locale:I18n.locale}
结束
这是一个问题,因为我使用的是CSS文件中的当前路径,所以每次切换语言都会弄乱布局:

<%= link_to (t 'nav.about'), about_path, class: current_p(about_path) %> 

#helper
def current_p(path)
   "current" if current_page?(path)
end

#助手
def当前_p(路径)
“当前”如果是当前页面?(路径)
结束

在切换语言时,我试图找到返回
匹配路径的方法。有什么想法吗?

我已经解决了结合
匹配
获取
的问题
因此,不是:

scope "(:locale)", locale: /en|br/ do
  get "static_pages/about"
  match '/about', to: 'static_pages#about'
  ...
end
我现在:

scope "(:locale)", locale: /en|br/ do
  match '/about', to: 'static_pages#about', via: 'get'
  ...
end
编辑-多亏了一个更简单、更短的解决方案:

scope "(:locale)", locale: /en|br/ do
  get '/about' => 'static_pages#about'
  ...
end

使用
get'/about'=>“static_pages#help'
会短一点(更容易)。使用
(:locale)
/:locale
有什么区别?@ArnoldRoa,它使:locale可选“如果您不想在路由中强制使用locale,可以使用可选路径范围(用括号表示)”