2012-01-21 49 views
1

出於某種原因,我的實例變量沒有在這個ActionMailer中設置。其他ActionMailer似乎工作正常。任何想法可能會造成這種情況? UserMailer是一個限制詞perpahps嗎?爲什麼我的實例變量沒有在我的動作郵件的視圖中設置?

使用Rails 3.1

# app/mailers/user_mailer.rb 

class UserMailer < ActionMailer::Base 
    default from: 'My Name <[email protected]>' 

    def registration_confirmation(user) 
    # Don't send email if we don't have an email address to send it to or the user is already confirmed 
    return unless user and user.email and not user.confirmed_at 

    # Set global variable for mail view 
    @my_message = 'Hello world!' 

    # Send email 
    mail(to: "#{user.name} <#{user.email}>", subject: 'Please confirm your email address') 
    end 

end 


# app/views/user_mailer/registration_confirmation.text.erb 

Hello who? <%= @my_message %> # Simply returns 'Hello who? ' 

回答

1

原來這行:

return unless user and user.email and not user.confirmed_at 

沒有中止發送電子郵件。相反,它只是中止上面看到的UserMailer代碼,並直接進入視圖,該視圖現在指的是尚未設置的實例變量。所以本質上,ActionMailer的工作方式與常規控制器完全相同。

爲了解決這個問題,我移動了檢查是否將電子郵件發送到運行UserMailer命令的地方的條件。

0

您將不得不重新啓動您的服務和工人,如果有任何更改要反映。

相關問題