3

Ember データ、ActiveModel シリアライザー、Ember Simple Auth Devise を使用して Ember.js アプリケーションを構築し、Rails API に接続して、単一のリソースをロードするルートを構築する方法を理解しようとしています。現在のユーザーの「マイ アカウント」ページ。

Rails の観点からは ID は必要ありませんが、Ember 側ではこれを実現する方法がわかりません。私の回避策は、Rails が無視するプレースホルダー ID を提供することでした。これを達成するためのより良い方法はありますか?

Ember.js:

MyAccountRoute = Ember.Route.extend(model: -> @store.find 'account', '1')

レール:

def show
  @item = @current_user.account
end
4

4 に答える 4

4

find を使用する場合、Ember Data には非常に具体的な実装があります。

findタイプで呼び出された場合、そのタイプのコレクションのみが期待されます。これはにマップされますfindAll

findタイプとプリミティブ タイプ (非オブジェクト) で呼び出された場合、そのタイプの単一のオブジェクト応答が期待されます。これはにマップされます。findById

findタイプで呼び出され、オブジェクトはコレクションを期待します(おそらく、送信されたパラメーターによってサーバー側でフィルター処理されます)、これはにマップされますfindByQuery

したがって、Ember Data を使用してこれを行う方法はありません。他の実装の 1 つにハッキングするか、ajax を使用してコールバックしてストアをサイドロードする場合を除きます。私はあなたが使用しているパターンを使用することを好みthis.store.find('user', 'me'); ます.そして、パラメータを無視します.

于 2014-10-05T15:36:17.643 に答える
0

Ember データにはqueryRecordメソッドがあります。

このメソッドは、ID が事前に知られていない 1 つのレコードを要求します。

http://emberjs.com/api/data/classes/DS.Store.html#method_queryRecord

于 2016-08-24T07:35:32.063 に答える
0

私は2つの答えを組み合わせて、サーバーによって無視されるパラメーターでqueryRecordを使用しました。

return this.store.queryRecord('user_settings', {id: 'me'});

Binarytales と antulik に感謝します

于 2016-08-29T15:46:00.180 に答える