7

Mam aplikację Rails i używam Ember na front-end. Chciałbym przenieść pliki związane z emberem o jeden poziom w strukturze katalogów, ale kiedy to zrobię, szablony przestaną się wyświetlać.Jak mogę określić alternatywny katalog dla moich szablonów HandlebarsJS z klejnotem ember-rails?

W zwykłym, wanilii, wersji aplikacji działa, moja struktura katalogów jest:

./app/ 
    assets/ 
    javascripts 
     application.js 
     ember-app.js 
     routes.js 
     store.js 
     models/ 
     controllers/ 
     routes/ 
     templates/ 
     views/ 

z: application.js

//= require jquery 
//= require jquery_ujs 
//= require handlebars 
//= require ember 
//= require ember-data 
//= require_self 
//= require ember-app 
App = Ember.Application.create(); 

oraz: ember- app.js

//= require ./store 
//= require_tree ./models 
//= require_tree ./controllers 
//= require_tree ./views 
//= require_tree ./helpers 
//= require_tree ./templates 
//= require ./router 
//= require_tree ./routes 

Wszystko działa poprawnie. Chciałbym jednak przenieść plik ember-app i cały kod javascript ember o jeden poziom, a kiedy to zrobię, szablony nie będą renderować. (Część aplikacji korzysta Ember, ale nie całą aplikację, a ja staram się skonfigurować dwie oddzielne ścieżki rurociągiem aktywów.)

Pożądana struktura jest następująca:

./app/ 
    assets/ 
    javascripts 
     application.js 
     embro/ 
     ember-app.js 
     routes.js 
     store.js 
     models/ 
     controllers/ 
     routes/ 
     templates/ 
     views/ 

w: application.js (zmieniony: 'wymaga ember aplikacji' staje się 'wymaga Embro/żaru app')

//= require jquery 
//= require jquery_ujs 
//= require handlebars 
//= require ember 
//= require ember-data 
//= require_self 
//= require embro/ember-app 
App = Ember.Application.create(); 

012 (żaru-app.js jest Niezmieniony).

Jak już powiedziałem, po ruchu, żadna treść szablonu nie pojawia się na ekranie. Brak błędów na ekranie lub w konsoli, tylko pusta aplikacja ember.

Kiedy sprawdzam Ember.TEMPLATES w konsoli, wszystkie oczekiwane szablony są wymienione. Co więcej, jeśli umieściłem pożądaną treść w szablonach kierownic x w odpowiednim widoku szyn, zawartość pomyślnie renderuje, tak jak w przypadku oryginalnej struktury katalogów.

Na przykład, w apps/widoki/welcome/index.html ....

<script type="text/x-handlebars" data-template-name="application"> 
    <h1>hello</h1> 
    {{ outlet }} 
</script> 

<script type="text/x-handlebars" data-template-name="index"> 
    <h1>this is the index</h1> 
</script> 

... i jesteś dobry, aby przejść ponownie.

ale jeśli zostawiam pusty widok szyn, tak jak to zrobiłem z oryginalną strukturą, to nie da.

Zastanawiasz się, czy klejnot ember-rails wymaga obecności szablonów kierownicy w aplikacji/asset/javascripts/templates i czy istnieje sposób, aby to zmienić. W dokumentacji wspomniano o dodaniu opcji templates_root do bloku konfiguracji aplikacji i zastanawiam się, czy to jest klucz. Grałem już trochę, ale bez powodzenia.

Wszelkie pomysły?


UPDATE:

boi ja nie mający szczęścia z opcją templates_root. W ramach eksperymentu próbowałem zbudować nową, prostą aplikację szyny i użyć generatora ładowania początkowego ember-rails, aby go uruchomić.Wszystko jest w porządku, ale jeśli spróbuję po prostu zmienić nazwę folderu (np. App/assets/javascripts/templates -> app/assets/javascripts/temple), z odpowiednimi zmianami w zębach i plikach konfiguracyjnych, Otrzymuję takie same wyniki.

Czy istnieje szansa, że ​​opcja templates_root zostanie w jakiś sposób uszkodzona?

Używam Ruby 1.9.3, 3.2.11 Rails, ember barierki 0.10.0

Wszelkie odnośniki do gdzie należy szukać w kodzie źródłowym ember/ember szyn/kierownicy? Zaczęłam grzebać.

dziękuję!

+2

Nawet jeśli works_root działa, ale nadal ogranicza się tylko do jednego obszaru nazw. Chciałbym zrobić to samo, ale także mieć coś w rodzaju sekcji admin.js i admin/templates. – ootoovak

Odpowiedz

16

Masz rację, musisz ustawić templates_root. Spróbuj dodać

config.handlebars.templates_root = 'embro/templates' 

do bloku konfiguracyjnego w application.rb lub

RailsApp::Application.config.handlebars.templates_root = 'embro/templates/' 

do nowego inicjatora, gdzie RailsApp jest cokolwiek aplikacja jest nazwany.

Edit:

udało mi się odtworzyć zachowanie, które opisano z templates_root. Naprawiono dla mnie usunięcie folderu /tmp mojej aplikacji i ponowne uruchomienie szyn. Następnie szablony zostały nazwane poprawnie.

Edit:

Dokładniej, trzeba wyczyścić pamięć podręczną zębatkami na /tmp/cache/assets po zmianie templates_root.

Edit:

Jak wspomniano w komentarzach poniżej, prosta rake tmp:cache:clear powinien dbać o problemie.

+0

dzięki, ale niestety nadal nie działa. – doublea

+0

fantastyczne. nie mogę ci wystarczająco podziękować! – doublea

+1

Legen .... czekaj na to ...... dary. Przez kilka godzin waliłem głową w ścianę. I wszystko, co musiałem zrobić, to usunąć katalog damn/tmp. Dzięki –

Powiązane problemy