开发者

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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜