Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Make a custom helper available to both Mailer and View in Rails 3.1

is this the best way to make a helper available to both Mailer and view in Rails 3.1?

class EventMailer < ActionMailer::Base
  include MailerHelper
  helper :mailer

I tried

helper :mailer

on its own, but that didn't allow me to use the helpers in the EventMailer class.

I tried

add_template_helper(MailerHelper)

but had the same problem.

like image 752
pingu Avatar asked Jul 22 '11 19:07

pingu


1 Answers

The rails helpers are supposed to be view helpers.

You will notice that the following code :

class MyController < ApplicationController
    helper :my
end

will make the methods in MyHelper available to the views, but not to your controller actions. include MyHelper will make the helper methods available in the controller.

Summarized :

helper :my and you can use the helpers in your views

include MyHelper and you can use the helpers in your controller

I explained a bit more, but you already answered your question :

class EventMailer < ActionMailer::Base
    include MailerHelper
    helper :mailer

    # rest of the code goes here ...
end

will do what you want and allow you to use your helper in both your mailer and your views.

Hope this helps.

like image 104
Benoit Garret Avatar answered Oct 01 '22 04:10

Benoit Garret