在应用程序的普通,vanilla,工作版本中,我的目录结构是:
./app/ assets/ javascripts application.js ember-app.js routes.js store.js models/ controllers/ routes/ templates/ views/
with:application.js
//= require jquery //= require jquery_ujs //= require handlebars //= require ember //= require ember-data //= require_self //= require ember-app App = Ember.Application.create();
和: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
一切正常.但是,我想将ember-app文件和所有ember javascript代码向下移动一级,当我这样做时,模板不会渲染. (部分应用程序使用Ember,但不是整个应用程序,我正在尝试通过资产管道设置两个单独的路径.)
所需的结构是:
./app/ assets/ javascripts application.js embro/ ember-app.js routes.js store.js models/ controllers/ routes/ templates/ views/
with:application.js(修订版:’require ember-app’成为’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未经修改.)
正如我所说,移动后,屏幕上不会显示任何模板内容.屏幕上或控制台中没有错误,只是一个空的ember应用程序.
当我在控制台中检查Ember.TEMPLATES时,会列出所有预期的模板.此外,如果我将所需内容放在适当的rails视图中的x-handlebars模板中,则内容会成功呈现,就像对原始目录结构一样.
例如,在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>
……我们很高兴再去一次.
但如果我将导轨视图留空,就像我对原始结构所做的那样,那就不行了.
想知道是否ember-rails gem需要把手模板存在于app / assets / javascripts / templates中,如果有办法覆盖它.该文档提到将templates_root选项添加到应用程序配置块,我想知道这是否是关键.我玩了一下,没有运气.
有任何想法吗?
更新:
害怕我没有运气的templates_root选项.作为一个实验,我尝试构建一个新的,简单的rails应用程序,并使用ember-rails bootstrap生成器启动并运行它.一切都很好,但如果我然后尝试简单地更改模板文件夹的名称(即app / assets / javascripts / templates – > app / assets / javascripts / temple),对链轮包含和配置文件进行适当的更改,我得到了相同的结果.
templates_root选项有什么机会被打破?
我使用的是Ruby 1.9.3,Rails 3.2.11,ember-rails 0.10.0
在ember / ember-rails / handlebars源代码中我应该看到的任何指针?已经开始四处寻找.
谢谢!
解决方法
config.handlebars.templates_root = 'embro/templates'
到application.rb中的配置块,或
RailsApp::Application.config.handlebars.templates_root = 'embro/templates/'
到一个新的初始化程序,其中RailsApp是您的应用程序命名的任何内容.
编辑:
我能够重现您使用templates_root描述的行为.我的修复是删除我的应用程序的/ tmp文件夹并重新启动rails.之后,模板被正确命名.
编辑:
更确切地说,您需要在更改templates_root后清除/ tmp / cache / assets中的sprockets缓存.
编辑: