Search code examples
ruby-on-railsruby-on-rails-3actionmailerhelpermailer

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.


Solution

  • 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.