如何绕过default_url_options?

在我上一个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_userurl?

谢谢。

default_url_options 有一个param options ,您可以根据需要使用它们:

 def default_url_options( options = {} ) use_defaults = options.delete( :use_defaults ) if use_defaults { :my_default_param => 'my_param_value' } else {} end end 

或者你可以颠倒逻辑:

 def default_url_options( options = {} ) ignore_defaults = options.delete( :ignore_defaults ) if ignore_defaults {} else { :my_default_param => 'my_param_value' } end end