ruby-on-rails – 如何使用ember-rails gem为HandlebarsJS模板指
我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再渲染.
在应用程序的普通,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源代码中我应该看到的任何指针?已经开始四处寻找. 谢谢! 解决方法
你是对的,你需要设置templates_root.尝试添加
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缓存. 编辑: 正如下面的评论中提到的,一个简单的rake tmp:cache:clear应该解决这个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |