6

Ember と Rails の初心者が、両方について深刻な質問をしています。

ここに例示されているように、ember-rails セットアップを活用するプロジェクトを構築しています: https://github.com/dgeb/ember_data_example

ただし、事態をさらに複雑にするために、このプロジェクトは、より大きなアプリに含めるために、gem としてパッケージ化することを意図しています。そのために、テスト用のダミー プロジェクトを含むマウント可能なエンジンを作成しました。

問題は、エンバーレール、特にハンドルバーが意図した場所にテンプレートを見つけることができないことです。これにより、多くの機能が適切に機能しなくなります。

handlebars テンプレート ディレクトリの移動に関しては、ここで解決策を見つけました: How can I specify a Alternative directory for my HandlebarsJS templates with the ember-rails gem?

要約すると、次の値を設定することで、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。しかし、レールエンジン内でそれを機能させることに成功しませんでした。

https://github.com/andrewmp1/spree_outlet

ダミーアプリを使って統合テストを行う方法をまだ理解していません。しかし、それはやって来ます。

于 2013-06-18T17:39:33.573 に答える