我正在使用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
但它不起作用。
答案 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) %>
这里解释: