加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用ember-rails gem为HandlebarsJS模板指

发布时间:2020-12-17 04:26:17 所属栏目:百科 来源:网络整理
导读:我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再渲染. 在应用程序的普通,vanilla,工作版本中,我的目录结构是: ./app/ assets/ javascripts application.js ember-app.js routes.js st
我有一个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应该解决这个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读