6

Ember & Rails 新手在这里对两者都有一个严肃的问题。

我正在构建一个利用 ember-rails 设置的项目,如下所示:https ://github.com/dgeb/ember_data_example

然而,为了让事情变得更加复杂,该项目旨在被打包为一个 gem,以包含在一个更大的应用程序中。为此,我创建了一个可安装的引擎,其中包含一个用于测试的虚拟项目。

问题是,ember-rails,特别是车把无法在其预期位置找到模板。这会阻止许多功能正常工作。

在移动车把模板目录方面,我在这里找到了一个解决方案:如何使用 ember-rails gem 为我的 HandlebarsJS 模板指定替代目录?

总之,它指出我们可以通过设置值来指定 application.rb 中模板的路径config.handlebars.templates_root

但是,我认为如果需要将另一个ember-rails 引擎加载到更大的应用程序中,这将导致冲突......并且需要自己的配置设置。

有没有人有这些设置的经验,有没有办法让命名空间的 ember 应用程序在更大的环境中运行良好?

顺便说一句,这是在 ruby​​ 1.9.2 上运行最新的 ember-rails 的 rails 4。

4

4 回答 4

7

经过大量研究,Ember 似乎支持覆盖默认解析器:http ://emberjs.com/api/classes/Ember.DefaultResolver.html

您可以按照此处的说明指示它在命名空间应用程序中查找模板:https ://github.com/emberjs/ember.js/pull/2354

本质上,可以将解析器添加到您的Ember.Application.create(): (在上述拉取请求中引用@lukemelia)

App1 = Ember.Application.create({
    resolver: Ember.DefaultResolver.extend({
        resolveTemplate: function(parsedName) {
          parsedName.fullNameWithoutType = "app1/" + parsedName.fullNameWithoutType;
          return this._super(parsedName);
        }
    })
});

在撰写本文时,这似乎是 ember rc5 的一部分。

于 2013-06-18T16:16:02.383 回答
1

我刚刚在 Rails 引擎中创建了一个 ember 应用程序,我遇到了与您获得车把支持时相同的问题。我无法让 ember-rails 在引擎内工作,所以我查看了 ember-rails 的源代码,最后我只是直接在我的引擎中注册了带有倾斜的车把。ember-rails 里面有一些配置可以改变根模板路径:handlebars.templates_root。但是,我没有成功地让它在 Rails 引擎中工作。

https://github.com/andrewmp1/spree_outlet

我还没有真正理解如何使用虚拟应用程序进行集成测试。但它的到来。

于 2013-06-18T17:39:33.573 回答
0

对此还有另一种解决方案:效率不高,但很简单,并且适用于这种情况(作为 rails 应用程序中的引擎)。首先在引擎中创建一个初始化程序。引擎的配置目录中没有初始化程序目录,但您可以创建一个,并且放置在其中的初始化程序将起作用。

# path_to_engine/config/initializers/ember.rb
YourEngine::Engine.config.handlebars.templates_root = "your_path/templates"

与引擎相关的任何其他特定于 ember 的配置也可以放在此处

于 2014-04-01T23:24:15.417 回答
0

这是一个旧的 ember 应用程序,也是一个 rails 引擎。它使用基于 gemfile 条目的ember-rails gem 。你可能想查一下。在此处查看它安装在 rails 应用程序中:ember-cart-example。另外,这里是 rails app 中安装的 rails 引擎的在线演示

于 2013-06-18T20:26:50.087 回答