Как создать правильные URL в шаблонах почтовых программ? - PullRequest
3 голосов
/ 12 января 2012

Я использую Ruby on Rails 3.1.0 и хотел бы правильно генерировать URL-адреса в сообщениях электронной почты в формате HTML. В моем файле среды я установил

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 ссылок? Я также попытался установить default_url_options в моем mailer.rb файле

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

  def test_sending
    ...
  end
end

но это не работает.

Ответы [ 3 ]

9 голосов
/ 12 января 2012

users_path - относительный путь (/ users / 1).Для электронной почты вам нужен абсолютный путь, поэтому используйте users_url(@user), который вместо этого даст http://myapp.com/users/1.

1 голос
/ 12 января 2012

ваши настройки action_mailer верны.

Но вы должны использовать _url, а не _path для ссылки_,

<%= link_to @user.name, users_url(@user) %>
0 голосов
/ 12 января 2012

Убедитесь, что вы установили опцию конфигурации.Чтобы быть уверенным, что используется абсолютный путь, используйте:

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

ИЛИ задайте хост специально по ссылке:

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

Это объясняется здесь:

Помощники ActionView

...