Конвейер ресурсов Rails: как создать собственный файл манифеста
Я пытаюсь создать отдельный файл JavaScript javascript отдельно от application.js. Я беру код из application.js и вставлял его в новый файл, который я назвал "other_manifest.js", и поместил его в каталог assets/javascrips. Вот код:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .
В моем файле assets.rb я включил строку:
Rails.application.config.assets.precompile += %w(other_manifest.js)
Я предварительно компилирую и очищаю ресурсы локально, а затем, когда я запускаю страницу, все, что я получаю, - это точный текст из файла манифеста. Он не вносит ни одного из файлов. Как создать собственный файл манифеста?
Ответы
Ответ 1
Легко
У вас есть application.js
. Создайте второй файл: other_manifest.js
Затем в вашем макете layouts/application.html.erb
(может быть совсем другой макет):
<% if condition %>
<%= javascript_include_tag 'other_manifest' %>
<% else %>
<%= javascript_include_tag 'application' %>
<% end %>
И да, вам нужно добавить в свой config/initializers/assets.rb
(после чего перезагрузиться):
Rails.application.config.assets.precompile += %w(other_manifest.js)
Кроме того, обязательно удалите //= require_tree .
из манифеста. Потому что он будет включать в себя ВСЕ javascript в манифесте (делая другой манифест бессмысленным)