【问题标题】:Problems With Resetting Password - Devise重置密码的问题 - 设计
【发布时间】:2012-12-21 22:36:18
【问题描述】:

我在使用 Devise 重置密码时遇到问题。

当我点击“向我发送重置密码说明”时,我得到:

ArgumentError at /users/password
Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

它说问题出在第 5 行的/views/devise/mailer/reset_password_instructions.html.erb。

在该文件的第 5 行有:

<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>

虽然我尝试过,但我不知道如何在 Rails 中设置邮件程序。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails ruby devise erb


    【解决方案1】:

    最后,您需要为每个邮件程序设置默认的 url 选项 环境。这是“config/environments/development.rb”的配置:

    config.action_mailer.default_url_options = { :host => 'localhost:3000' }
    

    您需要指定主机,以便它可以显示在确认电子邮件中。

    【讨论】:

    • 现在可以使用了。我怎么知道它会在生产中工作吗?
    • 你必须做同样的事情,但在“config/environments/production.rb”中使用实际的生产主机
    • 我不需要添加邮件程序吗?它如何知道使用什么电子邮件?
    【解决方案2】:

    您可以像这样创建一个默认过滤器:

     # application_controller.rb
        before_filter :mailer_set_url_options
    

    ...

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

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      相关资源
      最近更新 更多