Edit: год спустя, если бы я собирался сделать это снова, я бы сделал это с curl.js вместо конвейера ресурсов Rails.
Похожие: Лучший способ добавить специфичный для страницы javascript в приложение Rails 3?
Я пишу приложение и использую coffeescript для генерации всех js. Вот почему связанный вопрос не делает то, что мне нужно.
Я хотел бы иметь возможность поместить файл coffeescript в подпапку моего каталога ресурсов и сделать так, чтобы этот файл .coffee обрабатывался только на одной странице. Страница находится по названному маршруту
match 'myNotifications' => 'user#notifications'
Самое очевидное, что нужно сделать, это поместить файл .coffee в assets\javascripts\user\index.js.coffee
. Но после прочтения документации об активах мне неясно.
Я прочитал эту строку (от http://guides.rubyonrails.org/asset_pipeline.html):
Вы должны поместить любой JavaScript или CSS, уникальный для контроллера, внутри
их соответствующие файлы активов, так как эти файлы могут быть загружены только
для этих контроллеров с такими строками, как <% = javascript_include_tag
params [: controller]%> или <% = stylesheet_link_tag params [: controller]
%>.
Ладно, круто, поэтому я добавил js для конкретной страницы в assets\javascripts\user.js.coffee
. Затем я перезагрузил мою домашнюю страницу, Ctrl F5. Файл user.js все еще загружается на домашней странице. Протестировано с $ -> alert 'ready from users controller'
; видя это предупреждение, когда я загружаю домашнюю страницу.
Есть ли у Rails способ получить файл на странице coffeescript, который будет обслуживаться только с этой страницей? Я неправильно читаю руководство? Есть ли место в папке ресурсов, куда я могу поместить файлы .coffee, чтобы они не загружались на каждой странице?
Обновление : Похоже, я мог бы получить ответ :
Есть несколько способов обойти эту проблему. Мы
может использовать require_directory вместо require_tree, так как это будет только
загружать файлы в текущем каталоге, а не в подкаталогах. Если
мы хотим больше контроля над включенными файлами, мы можем потребовать их
отдельно вместо включения всего каталога. В качестве альтернативы мы
может переместить файлы JavaScript, которые мы хотим включить во все
страницы в публичный подкаталог. Затем мы можем использовать require_tree
./public для включения только этих файлов.
Я сделаю это в AM.