2012-12-21 37 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