Alb*_*zon 0 ruby-on-rails actionmailer devise
我正在使用rails和设计,我正在尝试发送电子邮件,但我在生产和测试环境中得到以下错误,在开发中一切正常:
ActionView :: Template ::错误:缺少链接到的主机!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true#./ app/views/devise/mailer/reset_password_instructions.html.erb:9:in`_app_views_devise_mailer_reset_password_instructions_html_erb___200197999_97517150'
我的开发.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "localhost:3000" }
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
Run Code Online (Sandbox Code Playgroud)
test.rb
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => "localhost:3000" }
Run Code Online (Sandbox Code Playgroud)
production.rb
config.action_mailer.default_url_options = { :host => "mydomain.com" }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"
Run Code Online (Sandbox Code Playgroud)
reset_password_instructions.html.erb
<p>Hello, <%= @resource.full_name %>!</p>
<p>You have request a new passord</p>
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @token), class: 'btn btn-info' %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>
Run Code Online (Sandbox Code Playgroud)
错误在哪里?
小智 8
我不确定它是否是一个拼写错误,但看起来测试和生产的主机定义没有正确设置.
test.rb:
config.action_mailer.default_url_options = { :host => "http://loclahost:3000" }
Run Code Online (Sandbox Code Playgroud)
production.rb:
config.action_mailer.default_url_options = { :host => "http:/mydomain.com" }
Run Code Online (Sandbox Code Playgroud)
一旦设置正确,它应该工作.例如:
test.rb:
config.action_mailer.default_url_options = { :host => "localhost:3000" }
Run Code Online (Sandbox Code Playgroud)
production.rb:
config.action_mailer.default_url_options = { :host => "mydomain.com" }
Run Code Online (Sandbox Code Playgroud)