Подтвердить что ты не робот

Конвейер ресурсов 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)

Я предварительно компилирую и очищаю ресурсы локально, а затем, когда я запускаю страницу, все, что я получаю, - это точный текст из файла манифеста. Он не вносит ни одного из файлов. Как создать собственный файл манифеста?

4b9b3361

Ответ 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 в манифесте (делая другой манифест бессмысленным)