2013-06-20 23 views
3

我是非常新的鐵軌,所以請原諒我,如果我在這裏失蹤的東西明顯!ActionMailer發送空白電子郵件,而不是渲染模板,Rails 3

ActionMailer不會將正文發送到我的電子郵件。標題通過罰款,但沒有身體。

我的幾個類似的問題,但沒有解決方案爲我工作,我花了2天拖網和追逐我的尾巴,都無濟於事!

我有設計運行,併發送它的電子郵件罰款!

我得出的結論是actionmailer沒有渲染我的模板。

我有簡單的私人消息gem運行內部郵件,並在其控制器我發送電子郵件時,用戶在應用程序中收到一條消息。

事情到目前爲止,我曾嘗試:

  1. 使用提供!而不是提供

  2. 指定CONTENT_TYPE :, template_path :, TEMPLATE_NAME:在user_mailer.erb

  3. 在user_mailer文件運行塊指定模板。即

    format.html { render 'welcome_email' } 
    format.text { render :text => 'welcome_email.txt.erb' }) 
    

這將導致錯誤,儘管模板在正確的目錄是(我認爲)

 ActionView::MissingTemplate (Missing template user_mailer/welcome_email with {:locale=[:en], :formats=>[:text], :handlers=>[:erb, :builder, :arb, :coffee, :haml]}. 
  1. 所有可能的名字前綴的模板...... 模板。 html.erb,template.text.html.erb,template.erb

  2. 即使嘗試刪除'config.active_suppo rt.deprecation =:log'從環境中,因爲一個帖子建議它可能是修復! (雖然我怎麼樣,我不知道)

  3. 在郵件中刪除任何參數,以防萬一導致問題!

  4. 尊敬welcome_email方法根據API,而不是一個自定義的,我會推遲,只是incase Rails約定配置已經讓我失望!

已設置ActionMailer日誌記錄,但它似乎沒有顯示錯誤,表示電子郵件發送,但沒有引用模板。 上述解決方案是我記得的,但他們都爲別人工作,只是不適合我! 我完全喪失了我所錯過的!

在此先感謝您的幫助!如果你需要更多的代碼,請告訴我。

運行 導軌3.2.3, Ruby 1.9的, 的ActionMailer 3.2.3

似乎沒有人張貼在這裏鏈接到GIT repo's。這是有原因的嗎?非常樂意提供,但似乎沒有人,所以現在不會。

下面是一些代碼,以幫助找到故障...

user_mailer.rb

class UserMailer < ActionMailer::Base 
    default :from => "[email protected]" 



     def welcome_email(user) 
     @user = user 
     @url = "http://example.com/login" 
     mail(:to => user.email, :subject => "Welcome to My Awesome Site") 
     end 
    end 

messages_controller.rb

def create 
@message = Message.new(params[:message]) 
@message.sender = @user 
@message.recipient = User.find(params[:message][:to]) 

if @message.save 
    flash[:notice] = "Message sent" 
    UserMailer.welcome_email(@message.recipient).deliver! 
    redirect_to user_messages_path(@user) 
else 
    render :action => :new 
end 

welcome_email.html.erb

<!DOCTYPE html> 
    <html> 
     <head> 
     <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 
     </head> 
     <body> 
     <h1>Welcome</h1> 
     </body> 
    </html> 

welcome_email.text.erb

Text Text Text!!! 

日誌從控制檯服務器

Sent mail to [email protected] (14517ms) 
Date: Thu, 20 Jun 2013 18:13:23 +0200 
From: [email protected] 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: Welcome to My Awesome Site 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 


Redirected to http://localhost:3000/users/1/messages 
Completed 302 Found in 14674ms (ActiveRecord: 15.3ms) 
+0

首先,你的郵件模板的完整路徑是什麼?應該是app/views/user_mailer/welcome_email.html.erb。其次,「捆綁開放式設計」並確認您的操作與他們完全相同。 – davidfurber

+0

@davidfurber感謝您的回覆。路徑是'app/views/user_mailer/welcome_email.html.erb'和'app/views/user_mailer/welcome_email.test.erb' –

+0

在Devise Gem我有點迷路,我不理解ActionMailer Logic。 'def devise_mail(record,action,opts = {}) initialize_from_record(record) mail headers_for(action,opts)'這與我正在做的不一樣! –

回答

4

這是一個愚蠢的錯誤,就像我知道這將是!一個Git承諾指出...

create mode 100644 app/views/user_mailer/ welcome_email.html.erb 
create mode 100644 app/views/user_mailer/ welcome_email.text.erb 

空格在文件名的開始,這真的很難注意到在崇高的文本!

因爲愚蠢的錯誤很容易失去2天,但我學到了很多,試圖找出它!

相關問題