如何设置 url 帮助器方法参数的默认值?

2023-12-25

我使用语言代码作为前缀,例如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(使用前将#替换为@)

如何设置 url 帮助器方法参数的默认值? 的相关文章

随机推荐