【问题标题】:How to move mailer inside namespace如何在命名空间内移动邮件
【发布时间】:2014-01-25 23:48:47
【问题描述】:

我有一个运行良好的 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里面的view,Rails是找不到html模板的。电子邮件发送,但正文中没有任何内容。

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails actionmailer


    【解决方案1】:

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

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

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

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

    它可以防止冲突并使立即了解类的范围成为可能。

    【讨论】:

    • 这仍然不能解决问题。 app/views/foo/notifier/cool_email.html.erb 仍然没有被渲染。
    • 老兄,我是问题所在。我在控制台并获得了一个新的cool_email,但我没有附加交付方法,所以这就是我认为模板没有呈现的原因。 TL;DR:我是个白痴。
    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多