[英]How to generate correct URLs in mailer templates?
我正在使用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) %>
當我去查看收到的電子郵件時,生成的URL是http://users/1
,當然是不正確的。 因此, 如何在郵件模板中生成正確的URL,以便在正文消息中具有http://my_site.org/users/1
鏈接?
我也嘗試在我的mailer.rb
文件中設置default_url_options
class MyCustom::Mailer < ActionMailer::Base
default_url_options[:host] = 'my_site.org'
def test_sending
...
end
end
但這不起作用。
users_path
是相對路徑(/ users / 1)。 對於電子郵件,您需要絕對路徑,因此請使用users_url(@user)
,它將改為使用http://myapp.com/users/1 。
您的action_mailer設置正確。
但是您應該使用_url而不是_path作為link_to,
<%= link_to @user.name, users_url(@user) %>
看到您設置了config選項。 為確保它使用絕對路徑,請使用:
<%= link_to, "My Profile", users_url(:only_path => false, @user) %>
或在鏈接中專門設置主機:
<%= link_to, "My Profile", users_url(:host => "example.com", @user) %>
在這里解釋:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.