Bagaimana cara menentukan direktori alternatif untuk templat HandlebarsJS saya dengan permata ember-rails?

Saya memiliki aplikasi Rails, dan saya menggunakan Ember di front-end. Saya ingin memindahkan file terkait ember ke bawah satu tingkat dalam struktur direktori, tetapi ketika saya melakukannya, templatnya tidak lagi dirender.

Secara sederhana, vanilla, versi aplikasi yang berfungsi, struktur direktori saya adalah:

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

dengan: application.js

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

dan: 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

Semuanya berfungsi dengan baik. Namun, saya ingin memindahkan file aplikasi ember dan semua kode javascript ember ke bawah satu tingkat, dan ketika saya melakukannya, templatnya tidak dirender. (Sebagian aplikasi menggunakan Ember, tetapi tidak keseluruhan aplikasi, dan saya mencoba menyiapkan dua jalur terpisah melalui jalur aset.)

Struktur yang diinginkan adalah:

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

dengan: application.js (direvisi: 'require ember-app' menjadi 'require embro/ember-app')

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

(ember-app.js tidak direvisi.)

Seperti yang saya katakan, setelah pemindahan, tidak ada konten template yang muncul di layar. Tidak ada kesalahan di layar atau di konsol, hanya aplikasi ember kosong.

Saat saya memeriksa Ember.TEMPLATES di konsol, semua templat yang diharapkan telah terdaftar. Selanjutnya, jika saya meletakkan konten yang diinginkan dalam templat x-stang dalam tampilan Rails yang sesuai, konten tersebut berhasil dirender, sama seperti yang terjadi pada struktur direktori asli.

Misalnya, di apps/views/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>

... dan kami siap berangkat lagi.

tetapi jika saya membiarkan tampilan rel kosong, seperti yang saya lakukan dengan struktur aslinya, tidak ada jalan keluarnya.

Ingin tahu apakah mungkin permata ember-rails memerlukan templat setang untuk ada di aplikasi/aset/javascripts/templat, dan apakah ada cara untuk menggantinya. Dokumentasi menyebutkan penambahan opsi templates_root ke blok konfigurasi aplikasi, dan saya bertanya-tanya apakah ini kuncinya. Saya sudah bermain-main sedikit, belum berhasil.

Ada ide?


MEMPERBARUI:

Sayangnya saya tidak beruntung dengan opsi templates_root. Sebagai percobaan, saya mencoba membuat aplikasi Rails baru yang sederhana, dan menggunakan generator bootstrap ember-rails untuk mengaktifkan dan menjalankannya. Semuanya baik-baik saja, tetapi jika saya mencoba mengubah nama folder templat (yaitu app/assets/javascripts/templates -> app/assets/javascripts/temple), dengan perubahan yang sesuai pada sprocket termasuk dan file konfigurasi, saya mendapatkan hasil yang sama.

Adakah kemungkinan opsi templates_root rusak?

Saya menggunakan Ruby 1.9.3, Rails 3.2.11, ember-rails 0.10.0

Adakah petunjuk ke mana saya harus mencari kode sumber ember/ember-rails/stang? Sudah mulai mencari-cari.

terima kasih!


person doublea    schedule 19.02.2013    source sumber
comment
Meskipun templates_root berfungsi, itu hanya membatasi Anda pada satu namespace. Saya ingin melakukan hal yang sama tetapi juga memiliki sesuatu seperti bagian admin.js dan admin/templates.   -  person ootoovak    schedule 07.04.2013


Jawaban (1)


Anda benar bahwa Anda perlu menyetel templates_root. Coba tambahkan

config.handlebars.templates_root = 'embro/templates'

ke blok konfigurasi di application.rb, atau

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

ke penginisialisasi baru, di mana RailsApp adalah nama aplikasi Anda.

Sunting:

Saya dapat mereproduksi perilaku yang Anda gambarkan dengan templates_root. Perbaikan bagi saya adalah menghapus folder /tmp aplikasi saya dan memulai ulang Rails. Setelah itu, template diberi nama dengan benar.

Sunting:

Lebih tepatnya, Anda perlu menghapus cache sprocket di /tmp/cache/assets setelah mengubah templates_root.

Sunting:

Seperti disebutkan dalam komentar di bawah, rake tmp:cache:clear sederhana akan mengatasi masalah tersebut.

person ahmacleod    schedule 19.02.2013
comment
Legen....tunggu dulu......dary. Aku sudah membenturkan kepalaku ke dinding selama beberapa jam karena hal ini. Dan yang perlu saya lakukan hanyalah menghapus direktori /tmp sialan itu. Terima kasih - person Aaron Chambers; 27.02.2013
comment
Adakah ide tentang penggunaan teknik di atas untuk memberi spasi pada aplikasi Ember? stackoverflow.com/questions/15859552/ - person ootoovak; 09.04.2013
comment
Terima kasih, ini benar-benar membuat frustrasi. Saya bahkan membaca bagian tentang membersihkan cache aset di readme ember-rails, tapi saya melihatnya sekilas... - person Ryan; 26.06.2013
comment
Untuk menghapus tmp, Rails memiliki tugas rake rake tmp:clear untuk ini. - person lillq; 04.02.2014