Если вы обновляете это в конвейер, у вас есть несколько вариантов. Вероятно, вы должны принять решение о том, как должен работать конвейер при принятии решения.
Вообще говоря, цель конвейера состоит в том, чтобы объединить все ваши JS в один файл и минимизировать / сжать его. Смысл в этом заключается в том, чтобы уменьшить количество запросов на страницу и разрешить установку заголовков в далеком будущем, чтобы ресурс кэшировался в браузере или где-то в прозрачном прокси / кэше.
На опции.
1. Как и сейчас.
Вы могли бы продолжать делать то же самое, что знаете. Я предполагаю, что вы используете помощники rails для добавления этих файлов JS вида в основной файл макета. Вы можете продолжать делать то же самое с конвейером, однако вы должны добавить все файлы, которые вы используете, в массив прекомпиляции:
config.assets.precompile += ['candidate_opportunities.js', 'candidate_companies']
Активы должны быть в активах / javascripts, но нет необходимости добавлять их в файл манифеста, так как вы добавляете каждый из них по отдельности.
Настоятельно рекомендуется придерживаться значений Rails по умолчанию для конвейера и предварительно скомпилировать ресурсы для производства.
Недостатком является дополнительный запрос на этих страницах, но это проблема, только если приложение находится под высокой нагрузкой.
2. Актив Трубопроводный путь (ТМ)
Чтобы сделать это с конвейером, вам нужно переместить эти файлы в assets / javascripts и require_tree
, как вы говорите.
Проблема в вашем случае заключается в том, что фрагменты JS предназначены для одного и того же класса (но с другими URL-адресами записей), поэтому это не сработает. И с require_tree порядок файлов может быть не тем, что вы хотите.
Новое приложение 3.1 генерирует файлы для представлений (я думаю), но ожидается, что они будут нацелены на уникальные атрибуты (с точки зрения сайта) в разметке, потому что все файлы включаются в application.js
Чтобы обойти проблему столкновений JS. Я бы посоветовал вам выполнить рефакторинг фрагмента JS, чтобы он был более общим. Вы можете использовать атрибут data-post-url
для сортируемого объекта:
<ul class="sortable_drag_n_drop" data-post-url="/candidate_opportunities/sort">
и затем соберите URL в вашем JS.
Мало того, что DRYer, но у вас меньше всего JS и вы можете полностью использовать конвейер, как предполагалось.