NoMethodError when trying to invoke helper method from Rails controller
To use the helper methods already included in the template engine:
- Rails 2: use the
@template
variable. - Rails 3: has the nice controller method
view_context
Example usage of calling 'number_to_currency' in a controller method:
# rails 3 sample
def controller_action
@price = view_context.number_to_currency( 42.0 )
end
# rails 2 sample
def controller_action
@price = @template.number_to_currency( 42.0 )
end
helper :all
makes all the helpers (yes, all of them) available in the views, it does not include them into the controller.
If you wish to share some code between helper and controller, which is not very desirable because helper is UI code and controller is, well, controller code, you can either include the helper in the controller, or create a separate module and include that in the controller and the helper as well.
if you need to share a method between a controller and helper/view, you can just define via 'helper_method' in the top of the controller:
class ApplicationController < ActionController::Base
helper_method :my_shared_method
...
def my_shared_method
#do stuff
end
end
hope that helps