ActionMailer的未定义方法`before_action'

时间:2013-07-04 12:59:21

标签: ruby-on-rails-3 actionmailer before-filter

尝试通过before_action过滤器将文件附加到邮件:

class UserMailer < ActionMailer::Base
  before_action :add_logo_attachment

  layout 'mail'
  default from: "\"Admin\" <admin@site.com>",
      to: Proc.new {Admin.pluck(:email)}

  def send_mail
    mail(subject: 'Hello, admin!')
  end
  .
  .
  private

  def add_logo_attachment
    attachments.inline['logo.png'] = File.read(Rails.root.join('app/assets/images/logo.png'))
  end

end

我得到了这个错误:UserMailer:Class的未定义方法`before_action' 在Rails指南中有相同的例子,我无法理解我的代码和指南中的代码之间的区别。

3 个答案:

答案 0 :(得分:3)

在Rails 3中没有ActionMaler :: Base的回调

答案 1 :(得分:1)

检查控制器的开头。有这样的错误...

  before_action :set_org, only: [:show, :edit, :update, :destroy]

意外地移到了这个......

class OrgsController < ApplicationController

将其移回课堂内。

答案 2 :(得分:0)

尝试

include AbstractController::Callbacks

在您的邮件程序类中并使用 before_filter

看到这个topic