【问题标题】:How to trigger email? rails如何触发电子邮件?导轨
【发布时间】:2013-04-22 10:20:35
【问题描述】:

我想在@post 视图中触发邮件“操作”。

class UserMailer < ActionMailer::Base
  default from: "example@gmail.com"

  def newsletter(post)
    @greeting = ""
    @users = User.all
    @users.each do |user|
      mail to: user.email, subject: post.title
    end
  end
end

  = button_to 'Deliver' do
    UserMailer.newsletter(@post).deliver
  end

如果我按下此按钮,它会在明显存在时弹出错误“No route matches posts/6”。

【问题讨论】:

    标签: ruby-on-rails ruby actionmailer


    【解决方案1】:

    你必须写一个动作,它会调用 UserMailer.newsletter(@post).deliver

    def send_newsletter
      @post = Post.find params[:id]
      UserMailer.newsletter(@post).deliver
      render :nothing => true 
    end
    

    添加必要的路由,并将按钮链接到该操作

    在 routes.rb 中

    resources :posts do
      member do
        get :send_newsletter
      end
    end
    

    在视图中

    link_to 'Deliver', send_newsletter_post_path(@post)
    

    此外,您可以更改 get 方法以发布和提交用于发送时事通讯的表单

    【讨论】:

    • 哇,这绝对像 Rails 的方式。谢谢。
    猜你喜欢
    • 2019-01-09
    • 2014-03-31
    • 2016-03-16
    • 2022-11-20
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2011-05-13
    相关资源
    最近更新 更多