How to call ApplicationController methods from ApplicationHelper
I want to provide开发者_C百科 csv links in a view and I placed the csv generating code in ApplicationHelper
. However I'm getting this error:
undefined method `send_data' for #<#<Class:0x0000010151c708>:0x0000010151a070>
referencing this:
send_data content, :type => "text/plain",
:filename => filename,
:disposition => 'attachment'
If I place the csv code in a controller it works fine. I was hoping to use the helper to avoid having to define routes for every controller I want to provide csv options for (I have a bunch). How can I make send_data
(and other necessary methods) available to the helper?
Use helper_method
.
By default, methods in ApplicationController
are only accessible inside the Controllers.
Add a method to the ApplicationController
and expose it as a helper method with helper_method
:
class ApplicationController < ActionController::Base
helper_method :foo
def foo
"bar"
end
end
Now the foo
method is accessible to both Controllers and Views.
If the issue is to make methods in ApplicationHelper available in all controllers, why not add a line
include ApplicationHelper
to the ApplicationController file?
精彩评论