Я знаю, что по этому поводу уже есть миллион вопросов, но я не могу получить это.
Я хочу включить большинство своих JS-файлов в конвейер ресурсов, но у меня есть несколько, которые я хочу загрузить условно (или только на определенных страницах). Это большие сложные файлы, которые никогда не будут используется 95% пользователей, поэтому я бы предпочел не загружать их для каждого пользователя. Один набор JS-файлов предназначен для календаря и помещен в:
app/assets/javascripts/calendar
Итак, мой манифест настроен так, чтобы включать только верхний каталог ( и исключить подкаталог календаря):
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_directory .
My config / 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, но я не знаю, как это сделать.)
Какое решение?
Спасибо!