Haml + ActionMailer - Rails? - PullRequest
       14

Haml + ActionMailer - Rails?

3 голосов
/ 18 февраля 2011

Я пытаюсь использовать ActionMailer без Rails в проекте, и я хочу использовать Haml для шаблонов электронной почты HTML. Кому-нибудь повезло с настройкой и инициализацией, чтобы шаблоны были найдены и отображены? В настоящее время я получаю ошибки, такие как:

ActionView::MissingTemplate: Missing template new_reg/daily_stats/full with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en]} in view paths "/home/petersen/new_reg/lib/new_reg/mailers/views"

Для пояснения, это ActionMailer 3.0.4

Ответы [ 4 ]

6 голосов
/ 21 февраля 2011

Похоже, проблема в том, что без полного стека Rails Haml загружается не полностью, а именно класс Haml :: Plugin. Добавление require 'haml/template/plugin' после обычной строки require 'haml', кажется, решает проблемы.

1 голос
/ 29 сентября 2011

require 'haml/template/plugin' в блоке "configure do" вместе с ActionMailer::Base.view_paths = "./views/" сделали это для меня (Синатра)

0 голосов
/ 20 февраля 2011

Я вижу похожую проблему и использую ActionMailer 3.0.3.register_template_extension не существует в ActionMailer 3.

Я использую Sinatra.У меня есть mailer.rb (ниже) в APP_ROOT / lib, и представления находятся в APP_ROOT / views / mailer.Это отправляет электронное письмо с темой, хотя тело пустое.

require 'action_mailer'
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.view_paths = File.dirname(__FILE__)+"/../views/"
ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'exmaple.com',
  :user_name            => 'user@exmaple.com',
  :password             => 'password',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

class Mailer < ActionMailer::Base

   def new_comment_notifier(post,comment)
      @post = post
      @comment = comment

      mail(:to => "user@example.com",
           :subject => "new comment on: #{post.title}")
   end
end
0 голосов
/ 20 февраля 2011

Не обязательно в Rails - но поскольку вы используете ActionMailer без Rails - вы указали ActionMailer::Base.register_template_extension('haml')?

...