DRY question

I need to have the exact same method available in all controllers and
in all views. Right now, I have it repeated in app/controllers/
application_controller.rb and app/helpers/application_helper.rb. In
DRY tradition, what’s the best way to only have it in one place?
TIA,
Craig

Just put it in a helper and include that helper in ApplicationController
like this

include MyHelperWithGlobalStuffInIt

On Feb 27, 5:10 pm, ben wiseley [email protected] wrote:

Just put it in a helper and include that helper in ApplicationController
like this

include MyHelperWithGlobalStuffInIt

You’re right, putting

include ApplicationHelper

into application_controller.rb does the trick.

But wasn’t that what

helper :all # include all helpers, all the time

was supposed to do?

Or do I misunderstand?

I’ve wondered about that too. That doesn’t work for me either. It
doesn’t
raise an error but doesn’t include :all either.

On Feb 28, 12:38 am, Dudebot [email protected] wrote:

But wasn’t that what

helper :all # include all helpers, all the time

was supposed to do?

Or do I misunderstand?

You do :-). The helper method controls which of your helpers (in app/
helpers) are available to the views for that controller. Without the
helper :all call, by default views rendered by foo_controller will get
helper methods from foo_helper. You can name specific modules, so for
example if you a bunch of common helpers in app/helpers/
common_helpers.rb then you say helper :common_helpers or helper
CommonHelpers to add that module for the controller in question.

helper :all means add all of the helpers from app/helpers to all of
your views.

Another way of solving the original problem is declaring the method in
application_controller and then saying

helper_method :some_helper

which takes the named controller method and makes it into a view
helper.

Fred

Or do I misunderstand?

You do :-). The helper method controls which of your helpers (in app/
helpers) are available to the views for that controller.

Ahhhhh. So that’s what it’s there for! :slight_smile:

Another way of solving the original problem is declaring the method in
application_controller and then saying

helper_method :some_helper

which takes the named controller method and makes it into a view
helper.

Thanks!
Craig

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs