Как включить помощников ActionView в конвейер ресурсов?

Как включить помощников представлений Rails, чтобы они были доступны контексту выполнения конвейера ресурсов?

Примером использования может быть создание разметки для формы с использованием вспомогательного метода form_tag и ее доступность для шаблона Javascript (например, ручек, jst и т. Д.).

Я использую гем handlebar_assets, но это также должно относиться к любому шаблону erb или haml.


person brutuscat    schedule 11.01.2013    source источник


Ответы (2)


Создайте инициализатор и включите помощников в контекст ресурсов следующим образом:

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

Взято из этой проблемы со звездочками

person brutuscat    schedule 11.01.2013
comment
Это также сработало для меня, когда я хотел отобразить пользовательский ERB в строке с template = ERB.new(html) template.result(binding). Без этого я не смог бы использовать concat и другие простые помощники. - person benathon; 04.06.2013
comment
@brutuscat, не могли бы вы уточнить, где бы вы поместили этот код? Спасибо - person jackerman09; 08.11.2013
comment
@ jackerman09 нет проблем: создайте инициализатор, подробнее см. здесь guides.rubyonrails.org/ configuring.html # using-initializer-files - person brutuscat; 09.11.2013

Приведенный выше ответ устарел. Что касается sprockets-rails 3, соответствующим интерфейсом является блок конфигурации, например:

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

Этот блок конфигурации все равно следует поместить в инициализатор.

ссылка: https://github.com/rails/sprockets-rails/issues/307#issuecomment-170707886

person bhaibel    schedule 11.01.2016