2017-06-11 17 views
0

フロントエンドemberアプリケーションからrails APIにデータを送信しようとしています。問題の方法は、寄付、カスタムルートに座っている:それに呼び出すためにはemberでアダプタを使用する方法

patch 'accounts/:id/donate' => 'accounts#donate'

が、私は私の燃えさしルートが通常のパッチメソッドをオーバーライドするためのアダプタを使用する必要があることを理解し、それはあります私の知識がどこで終わるかについてこれは私の現在のルートの状態です:

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    actions: { 
    donate(params){ 
     console.log('hits'); 
     console.log(params); 
     let patron = this.get('store').findRecord('account', 10); 
     // here is where I need to link to my adapter 
     patron.donate(params); 
    } 
    } 
}); 

と私のアダプタファイル(私も、これはまだ火に取得することはできませんので、コードの低品質が予想される):

import ApplicationAdapter from './application'; 

export default ApplicationAdapter.extend({ 
    // Not super confident about this adapter, not am I super confident about how I 
    // am passing data through it. 
    donate(store, type, record) { 
    let api = this.get('host'); 
    let serialized = this.serialize(record, {includeId: true}); 
    let accountId = serialized.account_id; 
    let url = `${api}/accounts/${accountId}/donate`; 
    let data = {account: serialized}; 
    return this.ajax(url, 'PATCH', {data}); 
    } 
}); 

この機能を動作させるための第一歩は、アダプタが自分のサーバを適切に呼び出せることを確認することです。どのように/私はこれを起こすことについて行くだろうか?

答えて

0

Emberのデフォルトアダプタでは、特定のREST APIリソースモデル(JSON API spec)が使用されていることがわかりました。しかし、Emberのコミュニティについての良い点は、共通の問題がある場合に役立つライブラリがあり、アクションベースのREST APIを持つことは非常に一般的です。

tl; drlコードベースに別のライブラリを追加できる場合は、ember-api-actionsをチェックアウトしてください。大雑把な見方からすると、ごくわずかな構成で必要なものを正確に実行しているようです。 Ember Observerには非常に優れた評価を得ています(それは価値があると思われます)。あなたのルートのアクションで

0

、createRecordのこのようなストアオブジェクトのメソッドを呼び出します寄付アクション:あなたのアダプタで

this.store.createRecord('modelName', objectToBeSentToTheServer); 

は、あなたが からのコールを処理するcreateRecord関数を作成する必要がありますルート。エンバーデータAPIで

ルック:

https://www.emberjs.com/api/data/

次のリンクはあなたに、作成、更新、レコードを発見するためのアダプタ機能の詳細を与える:

https://www.emberjs.com/api/data/classes/DS.JSONAPIAdapter.html

関連する問題