Я знаю, что уже есть миллион вопросов по этому вопросу, но я не могу получить это.
Я хочу включить большинство моих файлов JS в конвейер ресурсов, но у меня есть несколько, которые я хочу загрузить условно (или только на определенных страницах). Это большие, сложные файлы, которые никогда не будут использоваться 95% пользователей, поэтому я бы предпочел, чтобы они не загружались для каждого пользователя. Один набор файлов JS предназначен для календаря, помещенного в:
app/assets/javascripts/calendar
Таким образом, мой манифест настроен на включение только верхнего каталога (и исключая подкаталог календаря):
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_directory .
Мой конфиг / environment / production.rb:
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs.
config.assets.digest = true
# This following config is left over from previous Rails app,
# so not sure if it's now unnecessary ...
# Disable Rails's static asset server
# In production, Apache or nginx will already do this
config.serve_static_assets = false
В представлении я использую nifty_layout Райана Бейтса, чтобы вручную включать файлы календаря:
javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js"
Я пробовал прекомпилировать как в разработке, так и в производстве - в документах не ясно, где я должен это делать, но похоже на производство.
И когда я запускаю страницу, я получаю это:
ActionView::Template::Error (calendar/date.js isn't precompiled)
Я не хочу, чтобы он был предварительно скомпилирован. Я хочу, чтобы он загружался вручную. (На самом деле, было бы хорошо предварительно скомпилировать в файл, отличный от созданного основного application.js, но я не знаю, как это сделать.)
Какое решение?
Спасибо!