如何在命名空间内移动邮件程序

时间:2014-01-25 14:50:59

标签: ruby-on-rails actionmailer

我有一个Rails 3邮件工作正常。

class Notifier < ActionMailer::Base
  def cool_email(user_id)
     @user = User.find_by_id(user_id)
     mail(to: @user.email,
          from: 'admin@example.com',            
          subject: 'hi'
       )
    end 
 end

此视图将正确呈现@user实例变量,并且发送电子邮件没有任何问题。

但是,当我命名邮件时,一切都会中断。邮件的结构是这样的。

class Foo::Notifier < ::ActionMailer::Base
  def cool_email(user_id)
     @user = User.find_by_id(user_id)
     mail(to: @user.email,
          from: 'admin@example.com',            
          subject: 'hi'
       )
    end 
 end

在app / view / foo里面的视图,Rails无法找到html模板。电子邮件发送,但身体内部没有任何内容。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

视图应存储在app/view/foo/notifier中,特别是app/view/foo/notifier/cool_email.EXTENSION

仅供参考,将Mailer附加到邮件程序名称始终是一个好习惯。

class Foo::NotifierMailer < ::ActionMailer::Base

class Foo::NotificationMailer < ::ActionMailer::Base

它可以防止冲突,并且可以立即理解类的范围。