17

フロントエンドに Ember 2.0 を使用し、バックエンドに Rails 4.2 を使用して、json_api_resources gem を使用してオンライン フォーム ビルダーを作成しています。

フォームを発行する過程で、ユーザーは構成したフォームに「ajax」するために、コードのスニペットを自分の Web ページにカット アンド ペーストできる必要があります。

したがって、フォーム モデルの「embed-snippet」属性は読み取り専用にする必要があります。ユーザーがフォームを変更してレコードを再保存するときに、スニペット フィールドの内容がサーバーに送り返されないようにします。

私が検討したいくつかのアプローチ:

  • シリアライザーを変更して、この特定の属性をチェックし、バックエンドに送信する前にペイロードからドロップする
  • 「embed-snippet」フィールドをフォームモデルとの関係を持つ別のモデルに変換し、保存から何らかの形で除外する
  • 新しい Ember データ属性タイプの作成

理想的には、この問題に対処するためのより良い方法があるでしょう。

何かのようなもの:

'DS.attr('string', { readOnly: true })

私の質問は、このフィールドの内容がサーバーに送り返されないようにする最善の方法は何ですか?

4

3 に答える 3

18

これを行う最も簡単な方法は、フォーム モデルのカスタム シリアライザーを作成し、attrsプロパティを使用して属性がシリアル化されないようにすることです。

app/serializers/form.js

export default DS.JSONAPISerializer.extend({
    attrs: {
        embedSnippet: { serialize: false }
    }
});

属性の詳細と例については、API ドキュメントhttp://emberjs.com/api/data/classes/DS.JSONSerializer.html#property_attrsを参照してください。

于 2015-09-28T19:07:33.070 に答える