module UrlHelper
def with_subdomain(subdomain)
subdomain = (subdomain || "")
subdomain += "." unless subdomain.empty?
[subdomain, request.domain, request.port_string].join
end
def url_for(options = nil)
if options.kind_of?(Hash) && options.has_key?(:subdomain)
options[:host] = with_subdomain(options.delete(:subdomain))
end
super
end
end
class ApplicationController < ActionController::Base
include UrlHelper
end
url_for
在控制器的视图中使用修改是可以的。但是我在使用 ActionMailer 时遇到了麻烦。
我尝试使用以下内容:
class Notifier < ActionMailer::Base
include UrlHelper
end
但是 ActionMailer 视图仍然使用来自 ActionDispatch::Routing::RouteSet 的旧的未修改的 url_for。
添加新 url_for 的最佳做法是什么