由于 ActionController::Base#default_url_options 已弃用,我想知道如何在 rails3 中设置默认 url 选项。默认 url 选项不是静态的,而是依赖于当前请求。
http://apidock.com/rails/ActionController/Base/default_url_options
谢谢,科林
由于 ActionController::Base#default_url_options 已弃用,我想知道如何在 rails3 中设置默认 url 选项。默认 url 选项不是静态的,而是依赖于当前请求。
http://apidock.com/rails/ActionController/Base/default_url_options
谢谢,科林
要为当前请求设置 url 选项,请在控制器中使用类似的内容:
class ApplicationController < ActionController::Base
def url_options
{ :profile => current_profile }.merge(super)
end
end
现在, :profile => current_profile 将自动合并到路径/url 参数。
路由示例:
scope ":profile" do
resources :comments
end
写吧:
comments_path
如果 current_profile 已将 to_param 设置为“lucas”:
/lucas/comments
我相信首选的方法是现在告诉路由器处理这个问题:
Rails.application.routes.default_url_options[:foo]= 'bar'
您可以将此行放入其中之一routes.rb
或初始化器中。无论您喜欢哪个。如果值根据您的环境发生变化,您甚至可以将其放入您的环境配置中。
该 apidock.com 链接具有误导性。不推荐使用 default_url_options。
http://guides.rubyonrails.org/action_controller_overview.html#default_url_options
特别是对于 Rails 3,规范的方法是default_url_options
在你的ApplicationController
.
class ApplicationController < ActionController::Base
def default_url_options
{
:host => "corin.example.com",
:port => "80" # Optional. Set nil to force Rails to omit
# the port if for some reason it's being
# included when you don't want it.
}
end
end
我只需要自己弄清楚这一点,所以我知道它有效。
这改编自 Rails 3 指南: http:
//guides.rubyonrails.org/v3.2.21/action_controller_overview.html#default_url_options
Rails.application.routes.default_url_options[:host]= 'localhost:3000'
在developemnt.rb/test.rb中,可以更简洁如下:
Rails.application.configure do
# ... other config ...
routes.default_url_options[:host] = 'localhost:3000'
end