2012-12-21 43 views
3

我在使用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 

它说,这个问题是在/views/devise/mailer/reset_password_instructions.html.erb第5行

在第5行中该文件存在:

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

我不知道如何在Rails中设置邮件程序,虽然我试过。任何人都可以帮助我吗?

回答

5

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

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

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

+0

它的工作,现在我有。我如何知道它会在生产中起作用? – user1919937

+0

你必须这样做,但在“config/environments/production.rb”中,而不是实际的生产主机 –

+0

我不需要添加邮件程序吗?它如何知道要使用哪个电子邮件? – user1919937

1

你可以这样创建一个默认筛选器:

# 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