我用来生成JSON ActiveModel :: Serializer(gem' active_model_serializers')。 我有一个子域名。 有帮手。
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 TestSerializer < ActiveModel::Serializer
attributes :id, :url
def url
object.url # get "testurl"
# root_path(subdomain: object.url) # does not work
end
end
所以它返回&#34; testurl&#34; - http://example.com/testurl
有必要返回http://testurl.example.com/
答案 0 :(得分:0)
正如评论中所述,root_path
必须更改为root_url
。 _path
帮助程序不会产生主机名,因此使用它们的输出生成的链接将导致当前域/子域。