Ruby on rails url帮助程序中Rails 3中的子域

Ruby on rails url帮助程序中Rails 3中的子域,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试图让它工作,但它一直在使用我已经在的子域 在我调试时的url_中,它显示了我所期望的选项[:host](subdomain.domain.com),但super只返回“accounts/sign_”,而不返回完整路径。那感觉不对 发生什么事了?以下是我所拥有的: module UrlHelper def with_subdomain(subdomain) subdomain = (subdomain || "") subdomain += "." unless subd

我试图让它工作,但它一直在使用我已经在的子域

在我调试时的url_中,它显示了我所期望的选项[:host](subdomain.domain.com),但super只返回“accounts/sign_”,而不返回完整路径。那感觉不对

发生什么事了?以下是我所拥有的:

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

  def set_mailer_url_options
    ActionMailer::Base.default_url_options[:host] = with_subdomain(request.subdomain)
  end

end
我试过设计和非设计助手:

  = link_to 'Plan', new_plan_path(:subdomain => 'mysubdomain')
  = link_to "Sign up", new_registration_path(resource_name, :subdomain => 'mysubdomain');
更新: 当我遵循代码时,它最终会调用:

_routes.url_for((options || {}).reverse_merge!(url_options).symbolize_keys)
在哪里

_routes.url_for(options || {}) # -> "/accounts/sign_in"


仍然不确定如何解决此问题。

结果证明我需要使用“路径”帮助程序,而不是“url”帮助程序:(。因此,要使此工作正常,您需要使用根url,而不是根路径,等等。

结果证明我需要使用“路径”帮助程序,而不是“url”帮助程序:(.因此,要实现这一点,您需要使用根url,而不是根路径等。

如果您使用
super(选项)
rails 3.0.7。super(选项)也没有这样做。
subdomain=(subdomain | |“”)
可以缩短为
subdomain | |=“”
或者如果子域是字符串或nil,您可以删除这一行并进行更改,因为join方法调用数组中的每个元素
#to_s
,并
nil。to_s
返回一个空字符串。@jigfox--我刚从railscast中获取了该代码。知道如何使其工作吗?如果执行
super(选项)会怎么样
rails 3.0.7.super(选项)也没有这样做。
subdomain=(subdomain | |“”)
可以缩短为
subdomain | |=“”
或者,如果子域是字符串或nil,您可以删除这一行并进行更改,因为join方法调用数组中的每个元素,并返回空字符串。@jigfox--我刚从railscast获取了该代码。您知道如何使用该方法吗?
(url_options).symbolize_keys # -> {:host=>"test.lvh.me:3000", :protocol=>"http://", :_path_segments=>{:action=>"new", :controller=>"devise/passwords"}, :script_name=>""}