如何绕过default_url_options?

时间:2012-07-13 09:03:58

标签: ruby-on-rails ruby-on-rails-3 params

在我上一个Rails项目中,我不得不覆盖default_url_options中的application_controller.rb以始终在每个请求中传递一个参数,如下所示:

def default_url_options 
  { :my_default_param => my_param_value }
end  

现在每个url助手都会在每个生成的url末尾附加my_default_param。 例如user_url(@current_user)生成一个网址,如:

http://www.example.com/users/1?&my_default_param=my_param_value 

但有时我需要生成没有my_default_param 的网址。是否有一些选项可以传递给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网址?

谢谢。

1 个答案:

答案 0 :(得分:4)

您可以随意使用

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