如何从Rails中的路径中去除区域设置?

时间:2014-04-30 17:32:53

标签: ruby-on-rails ruby localization

在我的Rails应用程序中,我有这个辅助函数:

def frontend_section_link(title, path)
  localized_title = t("pages.#{title}")
  options = {}  
  options[:class] = 'current' if current_page?(path)
  content_tag :li do 
    link_to localized_title, path, options
  end
end

我在我的观点中使用它是这样的:

<ul id="main_navigation">
  <%= frontend_section_link(:features, features_path) %>
  <%= frontend_section_link(:pricing, pricing_path) %>  
  <%= frontend_section_link(:faq, faq_path) %>
</ul>

问题是,在用户刚刚切换语言后(例如从德语翻译成英语),它不会突出显示菜单项。

我想我必须摆脱path网址中的区域设置部分,但我不知道如何做到这一点,我发现Rails&#39;内置current_page?(path)函数仅在区域设置包含在path

中时才有效

换句话说,上面的函数应仅适用于URL的最后一段,例如/pricing/即使网址实际 /en/pricing/

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果您设置会话的区域设置,则可以使用该方式。你可以这样做:

before_action :set_locale

def set_local
  I18n.locale = session[:locale] || I18n.default_locale
end

然后当他们切换语言时,只需在会话中设置它。