【问题标题】:how to call actionmailer in rails admin controller?如何在 Rails 管理控制器中调用 actionmailer?
【发布时间】:2018-04-28 06:37:33
【问题描述】:

我想在通过 rails admin 创建内容后向用户发送电子邮件。

我知道我可以在模型回调中调用它,但它不是一个好的pratices

最好的方法是在控制器中模型保存后将 actionmailer 操作放在控制器中,但我不知道如何在 rails_admin 控制器中执行此操作

class UsersController < ApplicationController
  # POST /users
  # POST /users.json
  def create
    @user = User.new(params[:user])

    respond_to do |format|
      if @user.save
        # Tell the UserMailer to send a welcome email after save
        UserMailer.welcome_email(@user).deliver_later

        format.html { redirect_to(@user, notice: 'User was successfully created.') }
        format.json { render json: @user, status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end
end

【问题讨论】:

    标签: ruby-on-rails rails-admin


    【解决方案1】:

    在 rails admin 上你想做的事情并不容易,因为你不能修改控制器,也不能在没有猴子补丁的情况下访问它们。

    我实际上为这个功能创建了一个分支的 rails admin 检查提交的更改: https://github.com/aliada-mx/rails_admin/commit/6251554efd1d83cdb418f42683ee55a4e27c2474 刚碰了两个文件

    以及示例用法

    class User
       after_save :on_admin_updates
       attr_accessor :edited_in_rails_admin
    
       def on_admin_updates
          return unless edited_in_rails_admin
          self.edited_in_rails_admin = false
    
         UserMailer.welcome_email(self.id)
      end
    end
    

    我知道有点笨拙,欢迎 PR。

    【讨论】:

      【解决方案2】:

      您是否尝试将您的 Mailer 包含在 admin_controller 中?

      include UserMailer
      

      然后在您的创建操作中UserMailer.some_mailer_action.deliver_now

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 2016-08-20
        • 1970-01-01
        相关资源
        最近更新 更多