Pull to refresh

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

Reading time1 min
Views1.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

Удачи!
Tags:
Hubs:
Total votes 2: ↑2 and ↓0+2
Comments6

Articles