Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to include ActionView helpers in the assets pipeline?

How to include Rails view helpers to be accesible by assets pipeline execution context?

An example use case would be to generate the markup for a form, using form_tag helper method, and make it available to a Javascript template (like handlebars, jst, etc.).

I use handlebar_assets gem, but this should apply to any erb or haml template too.

like image 565
brutuscat Avatar asked Jan 11 '13 18:01

brutuscat


2 Answers

The above answer is now out of date. As of sprockets-rails 3, the appropriate interface is a configure block, like so:

Rails.application.config.assets.configure do |env|
  env.context_class.class_eval do
    # include SomeHelper
  end
end

This configure block should still be placed in an initializer.

reference: https://github.com/rails/sprockets-rails/issues/307#issuecomment-170707886

like image 26
bhaibel Avatar answered Nov 15 '22 18:11

bhaibel


Create a inititializer and include the helpers in the context of the assets like this:

Rails.application.assets.context_class.class_eval do
  include ActionView::Helpers
  include MyAppHelper
  include Rails.application.routes.url_helpers
end

Taken from this sprockets issue

like image 139
brutuscat Avatar answered Nov 15 '22 17:11

brutuscat