Как стать автором
Обновить

Как сделать javascript_include_tag рекурсивным?

Время на прочтение 1 мин
Количество просмотров 1.2K
Не знаю как вам, а мне давно не доставало возможности подключать свои js-файлы пачками.

Напомню, что в Rails есть стандартный хелпер javascript_include_tag(:all, :recursive => true), который включает все файлы из public/javascripts. Но мне захотелось управлять этим процессом. И вот что у меня получилось:

<%= javascript_include_tag collect_js("jquery-1.4.2", "jquery.*", "lib/*, "application") %>


По умолчанию происходит рекурсивное подключение всех *.js файлов по указанным шаблонам, но это можно отключить:

<%= javascript_include_tag collect_js("jquery-1.4.2", "jquery.*", "application", :without_recursion => true) %>


Исходный код хелпера под катом

def collect_js(*patterns)
  options = patterns.extract_options!.stringify_keys
  recursion = !options["without_recursion"] # with recursion by default
  patterns.collect do |pattern|
    scripts = collect_asset_files(File.join(RAILS_ROOT, 'public', 'javascripts'), pattern + '.js')
    scripts = scripts + collect_asset_files(File.join(RAILS_ROOT, 'public', 'javascripts'), pattern, '**', '*.js') if recursion
    scripts
  end
end

Удачи!
Теги:
Хабы:
+2
Комментарии 6
Комментарии Комментарии 6

Публикации

Истории

Работа

Ruby on Rails
17 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн