gpt4 book ai didi

ruby-on-rails - 如何使用 ember-rails gem 为我的 HandlebarsJS 模板指定替代目录?

转载 作者:行者123 更新时间:2023-12-04 07:30:22 24 4
gpt4 key购买 nike

我有一个 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,但不是整个应用程序,我正在尝试通过 Assets 管道设置两条单独的路径。)

所需的结构是:
./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 View 中的 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 View 留空,就像我对原始结构所做的那样,这是不行的。

想知道 ember-rails gem 是否需要 Handlebars 模板存在于 app/assets/javascripts/templates 中,以及是否有办法覆盖它。该文档提到向应用程序配置块添加 templates_root 选项,我想知道这是否是关键。我玩了一会儿,还没有运气。

有任何想法吗?

更新:

恐怕我对 templates_root 选项没有任何运气。作为一项实验,我尝试构建一个新的、简单的 Rails 应用程序,并使用 ember-rails bootstrap 生成器启动并运行它。一切都很好,但是如果我然后尝试简单地更改模板文件夹的名称(即 app/assets/javascripts/templates -> app/assets/javascripts/temple),并对链轮包含和配置文件进行适当的更改,我会m 得到相同的结果。

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。之后,模板被正确命名。

编辑:

更准确地说,您需要在 /tmp/cache/assets 清除链轮缓存。更改后 templates_root .

编辑:

正如下面的评论中提到的,一个简单的 rake tmp:cache:clear应该解决这个问题。

关于ruby-on-rails - 如何使用 ember-rails gem 为我的 HandlebarsJS 模板指定替代目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14948410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com