如何解决使用Rails 3的root_path和root_to以及区域设置url-paths
|| 我有一条简单的路线和一个简单的主菜单: routes.rbscope \"(:locale)\",:locale => /en|nl/ do
resources :posts,:only => [:show,:index]
end
root :to => \"posts#index\"
菜单
%ul#nav-language
%li.alpha
= menu_link_to(t(\'app.english\'),root_path)
%li.omega
= menu_link_to(t(\'app.nederlands\'),\"/nl/posts\")
%ul#nav-section
%li
= menu_link_to(t(\'app.blog\'),{:controller => \"posts\",:action => \"index\")
-#more %li\'s.
menu_link_to
是link_to
的简单包装,另外,在选择当前菜单时还可以设置\“ active \”类:
def menu_link_to(title,options = {},html_options = {})
if current_page?(options)
html_options[:class] ||= []
html_options[:class] << \"active\"
end
link_to(title,options,html_options)
end
如您所见,我有两个指向根的菜单项。以更直观的方式,我的菜单如下所示:
ZH-> /
博客-> /
关于等
NL-> / nl / posts
博客-> / nl / posts。在菜单中,该条目与英语条目相同,只是具有不同的语言环境前缀。
我真的不介意EN和EN»Blog链接到/ en / posts,如果这样做可以简化操作。
但是现在,current_path()在访问根路径时将返回FALSE。从Rails会尝试将语言环境设置为“名称=值”参数:/?locale=en
的意义上来说,它的行为也很奇怪。
我想我缺少一些关键的root_path或路由。有任何想法吗?
编辑:澄清\“博客\”项。
解决方法
您是否尝试在route.rb文件中添加匹配项?在root之前:
match \'/:locale\' => \'dashboard#index\'
在Rails国际化(I18n)API中提到
或者您也可以像这样将root置于作用域中:
scope \"(:locale)\",:locale => /en|nl/ do
resources :posts,:only => [:show,:index]
root :to => \"posts#index\"
end
然后,如果您未指定语言环境,则将使用默认语言环境。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。