Насколько я понимаю, все ваши JavaScript объединены в один файл.Rails делает это по умолчанию, когда добавляет //= require_tree .
в конец файла манифеста application.js
.
Это звучит как реальный спаситель жизни, но я немного обеспокоен специфичным для страницы кодом JavaScript.Этот код выполняется на каждой странице?Последнее, что я хочу, - чтобы все мои объекты создавались для каждой страницы, когда они нужны только на 1 странице.
Кроме того, нет ли возможности для кода, который тоже конфликтует?
Или вы помещаете маленький тег script
внизу страницы, который просто вызывает метод, который выполняетjavascript код для страницы?
Вам больше не нужен require.js тогда?
Спасибо
РЕДАКТИРОВАТЬ : Я ценю все ответы ..и я не думаю, что они действительно решают проблему.Некоторые из них касаются стиля и, похоже, не связаны между собой ... а другие просто упоминают javascript_include_tag
... который, как я знаю, существует (очевидно ...), но может показаться, что путь к Rails 3.1 в будущем - обернутьобъедините весь ваш JavaScript в 1 файл, а не загружайте отдельный JavaScript в нижней части каждой страницы.
Лучшее решение, которое я могу придумать, - это обернуть определенные функции в теги div
с id
s илиclass
ы.В коде JavaScript вы просто проверяете, присутствует ли на странице id
или class
, и, если это так, вы запускаете связанный с ним код JavaScript.Таким образом, если динамический элемент отсутствует на странице, код JavaScript не запускается - даже если он включен в массивный файл application.js
, упакованный Sprockets.
Преимущество моего решения, приведенного выше, заключается в том, что еслиокно поиска включено на 8 из 100 страниц, оно будет работать только на этих 8 страницах.Вам также не нужно будет включать этот код на 8 страницах сайта.На самом деле, вам никогда больше не придется добавлять теги сценариев вручную на ваш сайт.
Я думаю, что это реальный ответ на мой вопрос.