1

Hey guys, I have two controllers, X and Y:

In X, I have a :before_filter for a private method, foo.

I also have the following statement at the top of controller X.

helper_method :foo

In controller Y, I have a :before_filter for a private method, bar. In bar, I call foo. But apparently this is not allowed as I get an undefined local variable or method error. I would think that my :helper_method declaration should allow foo to be used in other controllers.

Generally, speaking, how can I achieve calling foo in controller Y? Is there a way while still keeping foo private? If not, how is achieved (while adhering to good design principles) if foo is not private?

Thanks!

deruse
  • 2,851
  • 7
  • 40
  • 60

1 Answers1

2

If you need foo in multiple controllers then you should put it in your base application controller as a protected method. That will give you access to it where you need it while keeping it out of the public interface.

Alternatively, you could put foo in a module and include it as needed.

Which approach you take depends on your specific circumstances.

mu is too short
  • 426,620
  • 70
  • 833
  • 800