2013-07-04 3 views
1

Пытаясь прикрепить файл к почте через before_action фильтр:неопределенный метод `before_action«для ActionMailer

class UserMailer < ActionMailer::Base 
    before_action :add_logo_attachment 

    layout 'mail' 
    default from: "\"Admin\" <[email protected]>", 
     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 

И я получаю эту ошибку: неопределенный метод `before_action» для UserMailer: Класс Существует тот же самый пример в Rails и я не могу понять, в чем разница между моим кодом и кодом в руководствах.

+6

Если вы используете рельсы 3, используйте 'before_filter' вместо' before_action' –

+0

Обратите внимание на то, что главная страница руководств Rails теперь предназначена для Rails 4.0.0. Если вы используете более раннюю версию Rails, вы должны смотреть на старые руководства. – BaronVonBraun

+1

Я использую Rails 3.2.13, и если я изменю before_action ro before_filter, чем рельсы скажут мне, что «неопределенный метод' before_filter » – barba

ответ

3

Там нет обратных вызовов для ActionMaler :: Base в Rails 3

+0

Есть ли способ сделать что-то подобное? –

+1

@BrianArmstrong Есть способ реализовать это сейчас. См. принятый ответ http://stackoverflow.com/questions/17565784/до того, фильтр-в-действии-MAILER-рельсы-3 –

1

Проверьте начало вашего контроллера. Если бы подобную ошибку, где это ...

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

был перемещен выше этого случайно ...

class OrgsController < ApplicationController 

переместить его обратно в класс.

Смежные вопросы