我有一个 Rails 应用程序,并且在前端使用 Ember。我想将目录结构中与 ember 相关的文件下移一级,但当我这样做时,模板不再呈现。
在应用程序的普通工作版本中,我的目录结构是:
./app/
assets/
javascripts
application.js
ember-app.js
routes.js
store.js
models/
controllers/
routes/
templates/
views/
与: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/
与: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>
...我们很高兴再次出发。
但如果我将 Rails 视图留空,就像我对原始结构所做的那样,那就不行了。
想知道 ember-rails gem 是否需要 app/assets/javascripts/templates 中存在车把模板,以及是否有办法覆盖它。文档提到向应用程序配置块添加 templates_root 选项,我想知道这是否是关键。我玩了一下,还没有运气。
有任何想法吗?
UPDATE:
恐怕我对 templates_root 选项没有任何运气。作为实验,我尝试构建一个新的、简单的 Rails 应用程序,并使用 ember-rails 引导生成器来启动并运行它。一切都很好,但是如果我尝试简单地改变name的 templates 文件夹(即 app/assets/javascripts/templates -> app/assets/javascripts/temple),并对 sprockets 包含和配置文件进行适当更改,我得到了相同的结果。
templates_root 选项是否有可能被破坏?
我正在使用 Ruby 1.9.3、Rails 3.2.11、ember-rails 0.10.0
有没有指向我应该在 ember / ember-rails / handbars 源代码中查找的位置的指针?已经开始摸索了。
thanks!