Я думаю, что документы http://guides.rubyonrails.org/asset_pipeline.html нуждаются в пояснениях. . Они заявляют:
Например, если создается ProjectsController, в app/assets/javascripts/projects.js.coffee появится новый файл, а в app/assets/stylesheets/projects.css.scss — еще один. Вы должны поместить любой JavaScript или CSS, уникальный для контроллера, в соответствующие файлы активов, так как эти файлы затем могут быть загружены только для этих контроллеров с такими строками, как ‹%= javascript_include_tag params[:controller] %> или ‹%= stylesheet_link_tag params[ :контроллер] %>.
Насколько я понимаю, в рабочем режиме все JS предпочтительно упаковываются в один оптимизированный файл. Я предполагаю, что кэширование этого оптимизированного файла предпочтительнее, чем страницы, специально загружающие разные наборы файлов JS.
Возможно, смысл javascript_include_tag состоит в том, чтобы запустить какой-то конкретный javascript на этой странице. Однако по умолчанию для application.js нужно включить дерево, которое включает в себя сгенерированные файлы. Поэтому я предполагаю, что это нужно будет настроить, чтобы НЕ включать какой-либо javascript, специфичный для контроллера.
Этот ответ здесь Использование Rails 3.1 , куда вы помещаете свой код javascript для своей страницы? кажется, предлагает разумный способ решения проблемы - связать функции JS с div, и когда JQuery не видит div на странице, ничего не выполняется.
Итак, какова наилучшая практика? Правильно ли я понимаю элементы div, специфичные для контроллера? Противоречит ли включенное по умолчанию дерево внутри application.js целям конкретного контроллера js?