2011-02-18 93 views
3

我想在項目中使用沒有Rails的ActionMailer,並且我想使用Haml作爲HTML電子郵件模板。任何人都有運氣得到這個配置和初始化,以便模板將被發現和呈現?目前我得到這樣的錯誤:Haml + ActionMailer - Rails?

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

+0

您使用的是哪個版本的軌道爲我做(西納特拉)? – 2011-02-18 19:05:35

+0

你能分享你的ActionMailer代碼嗎?在[ActionMailer API doc](http://api.rubyonrails.org/classes/ActionMailer/Base.html)上說:「就像操作控制器一樣,每個郵件程序類都有一個對應的視圖目錄,該目錄中的每個方法都尋找一個帶有名稱的模板爲了定義一個用於郵件的模板,創建一個與郵件模型中的方法同名的.erb文件。「 – 2011-02-18 19:27:18

+0

@jschulenklopper:我已經設法配置ActionMailer來查看視圖的有用目錄,它只是不啓用Haml或查找.haml擴展名。我只有一個 `require「haml」` 一行。 – dunedain289 2011-02-18 19:55:59

回答

6

看起來像問題是沒有完整的Rails堆棧,Haml不會完全加載,特別是Haml :: Plugin類。在正常require 'haml'行後面加上require 'haml/template/plugin'似乎解決了這個問題。

0

沒有必要Rails的 - 但因爲你正在使用的ActionMailer沒有Rails的 - 你指定ActionMailer::Base.register_template_extension('haml')

+1

as @Joseph提到,ActionMailer 3+中不存在`ActionMailer :: Base.register_template_extension('haml')`。 – dunedain289 2011-02-21 17:24:02

0

我看到一個類似的問題,正在使用ActionMailer 3.0.3。 register_template_extension在ActionMailer 3中不存在。

我正在使用Sinatra。我在APP_ROOT/lib中有mailer.rb(下面),視圖位於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   => '[email protected]', 
    :password    => 'password', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

class Mailer < ActionMailer::Base 

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

     mail(:to => "[email protected]", 
      :subject => "new comment on: #{post.title}") 
    end 
end 
1

require 'haml/template/plugin'ActionMailer::Base.view_paths = "./views/"一起「配置做」塊