设计确认链接缺少域名

时间:2013-03-18 11:37:35

标签: ruby-on-rails devise-confirmable

设计确认_url只生成一个没有域名的相对网址,例如:

http://users/confirmation?confirmation_token=...

我尝试过更改

confirmation_url(@resources, :confirmation_token => @resource.confirmation_token)

confirmation_url(:confirmation_token => @resource.confirmation_token)

但它产生相同的网址。我升级到设计2.2.3但结果相同。 Rails 3.1.4

更新 我已经设置了我的production.rb:

  config.action_mailer.default_url_options = { :host => 'mysubdomain.mysite.com' } 

我尝试设置

    before_filter set_actionmailer_host

    def set_actionmailer_host
      ActionMailer::Base.default_url_options[:host] = request.host_with_port
    end

在应用程序控制器(https://github.com/plataformatec/devise/issues/1567

中无效

更新 这在开发和生产中都会发生。

更新 我无法理解为什么Devise没有在app / views / devise / mailer / confirmation_instructions.html.haml中使用模板如果我可以编辑我可以手动附加主机:'http://mysite.com/' + confirmation_url(... 我尝试设置范围视图设置但它没有任何效果 这是一场灾难,用户无法确认他们的注册:(

1 个答案:

答案 0 :(得分:5)

您可能错过了将默认网址主机添加到环境配置文件中。运行rails g devise:install命令时,通常会收到这些说明。

# config/environments/development.rb

# Default actiomailer url host (required by devise) 
config.action_mailer.default_url_options = { host: 'myapp.dev' }

您需要为所有环境设置此设置。

# config/environments/production.rb

# Default actiomailer url host (required by devise) 
config.action_mailer.default_url_options = { host: 'myproductionapp.com' }