#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, который является игнорируемым префиксом