Rails 5.2 AngularJS и html-шаблоны

#ruby-on-rails #angularjs #asset-pipeline #sprockets

#ruby-on-rails #angularjs #ресурс-конвейер #звездочки

Вопрос:

Кажется, не могу понять, как заставить конвейер ресурсов воспроизводить файлы шаблонов AngularJS для компонентов, которым нравится это:

 app.component("chart", {
 templateUrl: "./templates/chart_element_tpl.html",
 controller: ChartElementController,
 bindings: {
    accounts: '='
 }
});
  

Я просмотрел различные сообщения об этой проблеме здесь, но, похоже, ни одно из предложений не работает. Я всегда получаю ошибку 404. В одном из них говорится об обновлении sprockets до версии 2.x, но я уже на версии 4.

Я позаботился о том, чтобы убедиться, что мой шаблон имеет имя, отличное от имени файла javascript, как предлагалось в другом сообщении, но, похоже, ни одна из этих вещей не помогает.

К вашему СВЕДЕНИЮ, структура каталога ресурсов, соответствующего assets, является:

 app/assetsjavascripts/chart_component.js
app/assets/javascripts/templates/chart_element_tpl.html
  

Мне действительно кажется странным, что html-шаблон хранится в папке javascripts, но, похоже, именно так люди это и делают. Я также позаботился о том, чтобы включить каталог в applications.js манифест с

 //= require_tree ./templates
  

Я пробовал такие вещи, как assets:clean и assets:precompile , yarn install и и перезапуск сервера, но ничто из этого, похоже, не решает проблему.

Я также установил драгоценный камень angular-rails-templates и потребовал его в application.js также никакой помощи.

Для меня имеет смысл, что это сбой, потому что фактические файлы имеют версию и т.д. В общедоступном каталоге, но не уверен, что с этим делать, чтобы AngularJS мог найти мои шаблоны.

Комментарии:

1. используете ли вы gem ‘angular-rails-templates’?

2. У меня установлен gem, и я включаю его в свой applications.js .

3. если вы используете значения параметров по умолчанию для этого драгоценного камня # config/application.rb config.angular_templates.module_name = ‘templates’ config.angular_templates.ignore_prefix = %w(templates/), вы должны добавить angular.module(‘MyApplication’, [‘templates’]) и иметь путь, подобный этому templateUrl: «chart_element_tpl.html «, без ./templates, который является игнорируемым префиксом