在我的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/
。
有人可以帮忙吗?
答案 0 :(得分:1)
如果您设置会话的区域设置,则可以使用该方式。你可以这样做:
before_action :set_locale
def set_local
I18n.locale = session[:locale] || I18n.default_locale
end
然后当他们切换语言时,只需在会话中设置它。