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.
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
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