在我上一个 Rails 项目中,我不得不覆盖 default_url_options
在 application_controller.rb
始终通过每个请求传递参数,如下所示:
def default_url_options
{ :my_default_param => my_param_value }
end
现在每个 url helper 都会在每个生成的 url 的末尾附加一个 my_default_param。
例如
user_url(@current_user)
生成一个网址,如: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
has one 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
关于ruby-on-rails - 如何绕过 default_url_options?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467339/