2012-01-12 49 views
3

我正在使用Ruby on Rails 3.1.0,並且想要在HTML電子郵件中正確生成URL。在我的環境文件I設置如何在郵件模板中生成正確的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鏈接?


我也tryed設置default_url_optionsmailer.rb文件

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

    def test_sending 
    ... 
    end 
end 

,但它不工作。

回答

9

users_path是相對路徑(/用戶/ 1)。對於電子郵件,您需要絕對路徑,所以請使用users_url(@user),這將給http://myapp.com/users/1

+0

我只是修正我!不管怎麼說,還是要謝謝你。 – user502052 2012-01-12 17:19:03

1

你的action_mailer設置是正確的。

但是,你應該使用_url而不是_PATH爲的link_to,

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

你有權利,但公平會選擇我會接受第一個答案。不管怎樣,謝謝你。 – user502052 2012-01-12 17:25:55

0

見您設置的配置選項。爲了確保它使用絕對路徑的使用:

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

或鏈接專門設置主機:

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

在此解釋:

ActionView Helpers