【发布时间】:2012-07-13 23:30:35
【问题描述】:
在我的上一个 Rails 项目中,我必须在 application_controller.rb 中覆盖 default_url_options 以始终通过每个请求传递一个参数,如下所示:
def default_url_options
{ :my_default_param => my_param_value }
end
现在每个 url 助手都会在每个生成的 url 的末尾附加一个 my_default_param。
例如user_url(@current_user) 会生成一个 url,如:
http://www.example.com/users/1?&my_default_param=my_param_value
但有时我需要在没有 my_default_param 的情况下生成 url。是否有一些选项可以传递给 url 帮助程序,以便 user_url(@current_user, some_option: some_option_value) 只返回:
http://www.example.com/users/1?&my_default_param=my_param_value
?
PN:我已经尝试过使用:overwrite_params=> { },但它不起作用,可能是因为它在 default_url_options 之前进行了评估。
如果没有,是否有其他方法可以在不附加 my_default_param 的情况下获取 @current_user url?
谢谢。
【问题讨论】:
-
如果你想覆盖
default_url_options,你就不能这样做:user_url(id: @current_user, my_default_param: nil)?
标签: ruby-on-rails ruby-on-rails-3 params