我使用语言代码作为前缀,例如www.mydomain.com/en/posts/1
。
这就是我在routes.rb中所做的:
scope ":lang" do
resources :posts
end
现在我可以轻松使用 url 助手,例如:post_path(post.id, :lang => :en)
。问题是我想使用 cookie 中的值作为默认语言。所以我可以写post_path(post.id)
.
有什么方法可以设置 url 助手中参数的默认值吗?我找不到 url 助手的源代码 - 有人可以指出我正确的方向吗?
另一种方法:我已经尝试在 paths.rb 中设置它,但它仅在启动时进行评估,这对我不起作用:
scope ":lang", :defaults => { :lang => lambda { "en" } } do
resources :posts
end
瑞安·贝茨 (Ryan Bates) 在今天的 Railscast 中对此进行了报道:http://railscasts.com/episodes/138-i18n-revised http://railscasts.com/episodes/138-i18n-revised
您可以在此处找到 url_for 的来源:http://api.rubyonrails.org/classes/ActionDispatch/Routing/UrlFor.html http://api.rubyonrails.org/classes/ActionDispatch/Routing/UrlFor.html
您将看到它将给定的选项与网址选项,这又调用默认网址选项.
将以下内容作为私有方法添加到您的 application_controller.rb 中,您应该已设置完毕。
def locale_from_cookie
# retrieve the locale
end
def default_url_options(options = {})
{:lang => locale_from_cookie}
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)