Изменить: через год, если я собираюсь сделать это снова, я бы сделал это с 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 способ иметь файл страницы на странице, который будет обслуживаться только с этой страницей? Я читаю руководство неправильно? Есть ли место в папке с ресурсами, в которое я могу поместить файлы. Coffee, где они не будут загружаться с каждой страницы?
Обновить. Похоже, я мог получить ответ:
Есть несколько способов, которыми мы можем обойти эту проблему. Мы может использовать require_directory вместо require_tree, поскольку это будет загружать файлы в текущий каталог, а не в подкаталоги. Если мы хотим большего контроля над включенными файлами, которые мы можем требовать от них отдельно, а не включать весь каталог. В качестве альтернативы мы может перемещать файлы JavaScript, которые мы хотим включить во все страниц в общий подкаталог. Затем мы можем использовать require_tree. /public включить только эти файлы.
Я дам этот выстрел в АМ.