使用范围区域设置跟踪路由



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

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

这是一个问题,因为我在CSS文件中使用当前路径,因此每次切换语言时,它都会弄乱布局:

<%= link_to (t 'nav.about'), about_path, class: current_p(about_path) %> 
#helper
def current_p(path)
   "current" if current_page?(path)
end

我正在尝试找到一种在切换语言时返回match路由的方法。知道吗?

我已经解决了结合matchget的问题。
因此,而不是:

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

相关内容

  • 没有找到相关文章

最新更新