rails 3.2 хамл шаблон электронной почты link_to ошибка - PullRequest
1 голос
/ 27 января 2012

У меня есть приложение (rails 3.2) с электронной почтой haml (3.1.4). В шаблоне электронной почты я хотел использовать link_to, но, по-видимому, ни один из этих 4 не работает в производстве:

#{link_to(my_models_url)}
= link_to(my_models_url)

/ @url set to my_models_url
#{link_to(@url)}
= link_to(@url)

В режиме разработки все работает нормально, но на производстве я получаю следующую ошибку:

No route matches {}
 actionpack (3.2.0) lib/action_dispatch/routing/route_set.rb:503:in `raise_routing_error'

Это работает, когда я использую вспомогательные методы раньше:

/ @my_link set to link_to(my_models_url)
#{@my_link}
= @my_link

Но это не удобно, если в письме есть больше ссылок, и в целом я не понимаю, почему ни один из первых 4 вариантов не должен быть в порядке. Я понятия не имею, откуда эта проблема. Буду признателен за любую помощь в этом ...

РЕШЕНИЕ:

Благодаря iWasRobbed я нашел, где были мои проблемы:

  1. все {resource} _path и {resource} _url должны быть установлены в почтовых программах как @variables, они не доступны в почтовых представлениях
  2. очевидно, метод link_to () в почтовой программе не такой, как в представлениях rails ... ему всегда нужны 2 аргумента, поэтому вместо link_to (@link), доступного в представлениях, нужно сделать link_to (@ link, @ link ). Пфффф ...

1 Ответ

0 голосов
/ 27 января 2012

Вам необходимо объявить URL в файле mailer.rb. Это не проблема HAML, а способ разработки ActionMailer.

def some_mailer_here
  @url = my_models_url
end

Тогда в своем почтовом представлении вы можете сделать:

= link_to("My models URL", @url)

http://guides.rubyonrails.org/action_mailer_basics.html#generating-urls-in-action-mailer-views

...