default_url_options和rails 3

guc*_*cki 17 actioncontroller ruby-on-rails-3

由于不推荐使用ActionController :: Base#default_url_options,我想知道如何在rails3中设置默认的url选项.默认URL选项不是静态的,而是依赖于当前请求.

http://apidock.com/rails/ActionController/Base/default_url_options

谢谢,科林

Dyl*_*kow 24

我相信首选的方法是告诉路由器处理这个:

Rails.application.routes.default_url_options[:foo]= 'bar' 
Run Code Online (Sandbox Code Playgroud)

您可以将此行放在其中一个routes.rb或初始化器中.无论你喜欢什么.如果值根据您的环境而变化,您甚至可以将其置于环境配置中.

  • 愚蠢的问题:你把*放在哪一行?在routes.rb中?在初始化程序中? (13认同)
  • 看起来这是Rails 3.2. (2认同)

Luk*_*iwa 24

要为当前请求设置url选项,请在控制器中使用以下内容:

class ApplicationController < ActionController::Base

  def url_options
    { :profile => current_profile }.merge(super)
  end

end
Run Code Online (Sandbox Code Playgroud)

现在,:profile => current_profile将自动注册到path/url参数.

路由示例:

scope ":profile" do
  resources :comments
end
Run Code Online (Sandbox Code Playgroud)

写吧:

comments_path
Run Code Online (Sandbox Code Playgroud)

如果current_profile将to_param设置为'lucas':

/lucas/comments
Run Code Online (Sandbox Code Playgroud)

  • 它适用于我的实际项目,我不知道为什么你认为它暴露为一个动作,只是从你的路线中删除默认路由/:controller /(:action).这种方法必须是公开的. (4认同)