Rails动作邮件程序if语句

萨布拉姆斯

我正在尝试在邮件中添加一些逻辑。基本上,我的一个模型中有十二个布尔字段,对于每个正确的字段,我希望将电子邮件发送到特定地址。具有布尔字段的模型称为Ecn。这是我的通知程序文件:

class EcnNotifier < ActionMailer::Base
  default from: "[email protected]"

  def submitted(ecn)
    @ecn = ecn
    @email_list = EmailList.all
    if @ecn.distribute_engineering?  
        mail to: "[email protected]", subject: 'ECN approvald' 
    else

    end
    if @ecn.distribute_purchasing? 
        mail to: "[email protected]", subject: 'ECN approval' 
    else

    end
    mail to: "[email protected]", subject: 'ECN approval'
  end
end

我在控制器中创建的动作如下所示:

  def submit

    @ecn = Ecn.find(params[:id])

    respond_to do |format|
      EcnNotifier.submitted(@ecn).deliver
      format.html { redirect_to ecns_url, alert: "Ecn has been submitted for approval." }
      format.json { render json: @ecns }
    end
  end

电子邮件会自动发送到[email protected],但是,无论distribute_engineering和distribute_purchasing是否为真,都不会将电子邮件发送到其他地址。我假设我错误地访问了我的对象实例,但是我不确定我要去哪里。

马蒂亚斯

我认为您只能在一个邮递员操作中发送一封邮件,而不能发送多封邮件。您可以发送一封邮件并添加一些抄送或密件抄送,但只能在一项操作范围内发送一封邮件。

我将控制器更改为以下内容:

def submit
  @ecn = Ecn.find(params[:id])

  respond_to do |format|
    EcnNotifier.notify_default(@ecn).deliver
    EcnNotifier.distribute_engineering(@ecn).delifer if @ecn.distribute_engineering?
    EcnNotifier.distribute_purchasing(@ecn).deliver if @ecn.distribute_purchasing?
    # and so on...
    format.html { redirect_to ecns_url, alert: "Ecn has been submitted for approval." }
    format.json { render json: @ecns }
  end
end

和您的EcnNotifier邮件:

class EcnNotifier < ActionMailer::Base
  default from: "[email protected]"

  def notify_default(ecn)
    @ecn = ecn
    @email_list = EmailList.all
    mail to: "[email protected]", subject: 'ECN approval'
  end

  def distribute_engineering(ecn)
    @ecn = ecn
    @email_list = EmailList.all
    mail to: "[email protected]", subject: 'ECN approval' 
  end

  def distribute_purchasing(ecn)
    @ecn = ecn
    @email_list = EmailList.all
    mail to: "[email protected]", subject: 'ECN approval' 
  end

end

顺便说一句:如果您要发送多封邮件,则应通过延迟作业gem或类似方式进行。否则,用户将不得不等待很长时间,因为在发送所有邮件期间,红宝石处理将被阻止。延迟的工作gem在github上可用:https : //github.com/collectiveidea/delayed_job

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动作邮件程序-使用Ruby on Rails通过联系表单发送电子邮件

来自分类Dev

动作邮件程序-Heroku Push

来自分类Dev

动作邮件程序变量定义说明

来自分类Dev

缺少链接到动作邮件程序的主机

来自分类Dev

Rails条件邮件程序

来自分类Dev

Rails邮件程序从地址替代

来自分类Dev

测试邮件程序(Ruby on Rails)

来自分类Dev

Sendgrid是否需要邮件gem,以及如何使用动作邮件程序进行设置?

来自分类Dev

邮件动作错误

来自分类Dev

护栏动作邮件4

来自分类Dev

在发送邮件时,在代理https路径中添加了Rails 4动作邮件图像的绝对路径

来自分类Dev

在发送邮件时,在代理https路径中添加了Rails 4动作邮件图像的绝对路径

来自分类Dev

规范/邮件程序/预览中不提供Rails邮件程序预览

来自分类Dev

找不到新的Rails 4.1邮件程序预览操作错误

来自分类Dev

Rails邮件程序连接被拒绝-本地主机

来自分类Dev

向我的Rails应用程序添加电子邮件

来自分类Dev

生产中的邮件程序中的Rails4模板错误

来自分类Dev

使用邮件程序参数的ActionMailer的rails before_action

来自分类Dev

resque rails 4.2 delivery_later邮件程序

来自分类Dev

找不到新的Rails 4.1邮件程序预览操作错误

来自分类Dev

Rails应用程序不发送电子邮件

来自分类Dev

向Rails应用程序添加电子邮件确认

来自分类Dev

电子邮件未在Rails应用程序中传递

来自分类Dev

向我的Rails应用程序添加电子邮件

来自分类Dev

尝试设置邮件程序时模板丢失错误-Rails

来自分类Dev

在 Rails 方法中测试延迟的作业邮件程序

来自分类Dev

在Rails中发送电子邮件后存储邮件程序类和方法

来自分类Dev

Ruby On Rails:邮件程序:Sidekiq-电子邮件中的资产路径无效:Engineyard:Nginx:乘客

来自分类Dev

Rails 4:通过操作邮件程序获取QRCode以在电子邮件中显示

Related 相关文章

  1. 1

    动作邮件程序-使用Ruby on Rails通过联系表单发送电子邮件

  2. 2

    动作邮件程序-Heroku Push

  3. 3

    动作邮件程序变量定义说明

  4. 4

    缺少链接到动作邮件程序的主机

  5. 5

    Rails条件邮件程序

  6. 6

    Rails邮件程序从地址替代

  7. 7

    测试邮件程序(Ruby on Rails)

  8. 8

    Sendgrid是否需要邮件gem,以及如何使用动作邮件程序进行设置?

  9. 9

    邮件动作错误

  10. 10

    护栏动作邮件4

  11. 11

    在发送邮件时,在代理https路径中添加了Rails 4动作邮件图像的绝对路径

  12. 12

    在发送邮件时,在代理https路径中添加了Rails 4动作邮件图像的绝对路径

  13. 13

    规范/邮件程序/预览中不提供Rails邮件程序预览

  14. 14

    找不到新的Rails 4.1邮件程序预览操作错误

  15. 15

    Rails邮件程序连接被拒绝-本地主机

  16. 16

    向我的Rails应用程序添加电子邮件

  17. 17

    生产中的邮件程序中的Rails4模板错误

  18. 18

    使用邮件程序参数的ActionMailer的rails before_action

  19. 19

    resque rails 4.2 delivery_later邮件程序

  20. 20

    找不到新的Rails 4.1邮件程序预览操作错误

  21. 21

    Rails应用程序不发送电子邮件

  22. 22

    向Rails应用程序添加电子邮件确认

  23. 23

    电子邮件未在Rails应用程序中传递

  24. 24

    向我的Rails应用程序添加电子邮件

  25. 25

    尝试设置邮件程序时模板丢失错误-Rails

  26. 26

    在 Rails 方法中测试延迟的作业邮件程序

  27. 27

    在Rails中发送电子邮件后存储邮件程序类和方法

  28. 28

    Ruby On Rails:邮件程序:Sidekiq-电子邮件中的资产路径无效:Engineyard:Nginx:乘客

  29. 29

    Rails 4:通过操作邮件程序获取QRCode以在电子邮件中显示

热门标签

归档