dou*_*lea 7 ruby-on-rails asset-pipeline handlebars.js ember.js ember-rails
我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再呈现.
在应用程序的普通,vanilla,工作版本中,我的目录结构是:
./app/
assets/
javascripts
application.js
ember-app.js
routes.js
store.js
models/
controllers/
routes/
templates/
views/
Run Code Online (Sandbox Code Playgroud)
with:application.js
//= require jquery
//= require jquery_ujs
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require ember-app
App = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)
和: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
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,我想将ember-app文件和所有ember javascript代码向下移动一级,当我这样做时,模板不会渲染.(部分应用程序使用Ember,但不是整个应用程序,我正在尝试通过资产管道设置两条不同的路径.)
所需的结构是:
./app/
assets/
javascripts
application.js
embro/
ember-app.js
routes.js
store.js
models/
controllers/
routes/
templates/
views/
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
(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>
Run Code Online (Sandbox Code Playgroud)
......我们很高兴再去一次.
但是如果我将轨道视图留空,就像我对原始结构所做的那样,那就不行了.
想知道是否ember-rails gem需要把手模板存在于app/assets/javascripts/templates中,如果有办法覆盖它.该文档提到将templates_root选项添加到应用程序配置块,我想知道这是否是关键.我玩了一下,没有运气.
有任何想法吗?
更新:
害怕我没有使用templates_root选项.作为一个实验,我尝试构建一个新的,简单的rails应用程序,并使用ember-rails bootstrap生成器启动并运行它.一切正常,但如果我再试图简单地改变名称的模板文件夹(即应用程序/资产/ Java脚本/模板- >应用程序/资产/ Java脚本/寺院),以适当修改链轮包括和配置文件,我得到相同的结果.
templates_root选项是否有可能被破坏?
我使用的是Ruby 1.9.3,Rails 3.2.11,ember-rails 0.10.0
在ember/ember-rails/handlebars源代码中我应该看到的任何指针?已经开始四处寻找.
谢谢!
ahm*_*eod 16
你是对的,你需要设置templates_root.尝试添加
config.handlebars.templates_root = 'embro/templates'
Run Code Online (Sandbox Code Playgroud)
到的配置块application.rb,或
RailsApp::Application.config.handlebars.templates_root = 'embro/templates/'
Run Code Online (Sandbox Code Playgroud)
到一个新的初始化程序,RailsApp无论你的应用程序是什么命名.
编辑:
我能够重现你描述的行为templates_root.我的修复是删除/tmp我的应用程序的文件夹并重新启动rails.之后,模板被正确命名.
编辑:
更确切地说,您需要/tmp/cache/assets在更改后清除sprockets缓存templates_root.
编辑:
如下面的评论所述,一个简单的rake tmp:cache:clear应该解决这个问题.
| 归档时间: |
|
| 查看次数: |
2387 次 |
| 最近记录: |