如何在邮件程序模板中生成正确的URL?

时间:2012-01-12 17:14:08

标签: ruby-on-rails ruby ruby-on-rails-3 email mailer

我正在使用Ruby on Rails 3.1.0,我想在HTML电子邮件中正确生成URL。在我的环境文件中,我设置了

config.action_mailer.default_url_options = { :host => 'my_site.org' }

在电子邮件视图文件(.html.erb)中,我说明了

<%= link_to @user.name, users_url(@user) %>

当我查看收到的电子邮件时,生成的网址为http://users/1,当然不正确。那么,如何在邮件程序模板中生成正确的网址,以便在正文消息中包含http://my_site.org/users/1个链接?


我还尝试在default_url_options文件中设置mailer.rb

class MyCustom::Mailer < ActionMailer::Base
  default_url_options[:host] = 'my_site.org'

  def test_sending
    ...
  end
end

但它不起作用。

3 个答案:

答案 0 :(得分:9)

users_path是相对路径(/ users / 1)。对于电子邮件,您需要绝对路径,因此请使用users_url(@user)代替http://myapp.com/users/1

答案 1 :(得分:1)

你的action_mailer设置是正确的。

但你应该使用_url而不是_path作为link_to,

<%= link_to @user.name, users_url(@user) %>

答案 2 :(得分:0)

看到您设置了配置选项。确保它使用绝对路径:

<%= link_to, "My Profile", users_url(:only_path => false, @user) %>

或者在链接中专门设置主机:

<%= link_to, "My Profile", users_url(:host => "example.com", @user) %>

这里解释:

ActionView Helpers