問題タブ [active-model-serializers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
52 参照

ruby-on-rails - ActiveModelSerializer は正しい順序で関数を必要とします

RoR バックエンドでフロントエンドと json の応答に取り組んでおり、コードが煩雑になるのを避けるためにシリアライザーをセットアップしようとして:only => []います。

私が見つけたのは、関連付けのあるシリアライザーでは、まだ初期化されていないクラスの名前を使用できないということです。

このようなコードは正常に動作しますが、これらのクラスを切り替えると (現在は 1 つのファイルにまとめられています) (理解のための UPD: 切り替えるということは、BookSerializer をファイル内の AuthorOnlySerializer の前に置くことです)。

これらの問題を回避し、それらを任意の順序で配置できる方法はありますか? クラスの代わりにシンボルをシリアライザーオプションに指定しようとしましたが、その後

であるため、そこではクラス以外はサポートされません。

何かご意見は?

0 投票する
1 に答える
2296 参照

ruby-on-rails - Railsアクティブモデルシリアライザー、nullの代わりに空の文字列を返す方法

レガシ アプリを使用する必要があり、古い (PHP ベースの) REST API を書き直す必要があります。古い API では、属性が null の場合、空の文字列になりました。

ただし、Rails は null を返すだけで、アプリが壊れます。アプリを書き直すことは解決策ではありません (これが最もクリーンな方法であっても)。また、古い API では、他の値は文字列 (整数、ブール値、数値) です。だから私は、もちろんすべての属性をオーバーライドせずに、すべての属性で to_s を実行するにはどうすればよいのか疑問に思っていました。アクティブ モデル シリアライザーを使用しています。

0 投票する
2 に答える
2207 参照

ruby-on-rails - Active_model_serializers の doorkeeper_token (または current_user) にアクセスします

私はRocketPantsで作成された Rails API に取り組んでいます。JSON シリアライズにはactive_model_serializersを使用し、OAuth- Doorkeeperには使用します。

current_user問題は、ヘルパー メソッド へのアクセスにありclass UserSerializer < ActiveModel::Serializerます。エラー:

current_userヘルパーは次のスニペットを使用します。

そしてdoorkeeper_token次のとおりです。

私が見つけたように、でrequestアクセス可能なオブジェクトはありませんSerializer。どうすればアクセスできるようになりますか? または、他の方法で実装する必要がありますcurrent_userか?

前もって感謝します

0 投票する
1 に答える
875 参照

ruby-on-rails - RocketPants と ActiveModelSerializers のカスタム シリアライザー

くそー、それはまた私です...

RocketPantsgitからの引用:

サポートactive_model_serializers- ActiveModelSerializers を使用する場合は、私たちが対応します。さらに良いことに、公開呼び出しで期待どおりにパススルーすると、:serializer呼び出しが自動的に処理されます。

それが私がやろうとしていることです:

そして、それがシリアライザーを次のように実装する方法ですuser_serializer.rb

exposeオプションなしで使用するserializerと、 に従って適切に JSON が作成されUserSerializerます。使用しようとすると、次のUserJustNameSerializerエラーが発生します。

RocketPants問題は、シリアライザへの道を適切に示す方法ですか? 現在、UsersController でそれを見つけようとしています。

0 投票する
1 に答える
320 参照

ruby-on-rails - ember.js のコンセプトに苦労している - 大量のデータ

Rails を利用した新しいアプリ (Active Model Serializers を使用) に Ember.js を使用することを検討しています。フレームワークについて頭を悩ませているので、これは少し初心者の質問かもしれません。

私のデータ構造は次のようなものです(簡略化):

「イベント日」内には、何千ものイベントが存在する可能性があります (イベント内には、数十人の参加者とそのすべてのデータがあります)。

イベント日のリストを取得したいときに、EventDays だけでなくすべてのイベント (およびそこにあるすべてのデータ) を含む JSON をロードするのは「間違っている」ようです...基本的に、それはロードされます木全体!

アクションにカスタムシリアライザーを使用することでこの問題を解決できると思いましたが、ある時点でデータを取得する必要があり、Ember はサーバーを再度呼び出すことはないようです。

そのため、EventDays をロードし、その中にイベント データがない場合、「show」メソッドをクリックしても、Ember がサーバーを呼び出して EventDay オブジェクトを更新することはありません。

ここではっきりしているのかどうかわかりません。この点で私より少し先を行っている人が、私が運転していることを理解してくれることを願っています!

本当に私はそれが2つの質問に要約されると思います:

1) リクエストに関する情報を適切に除外して、ローカル オブジェクトのみが入力されるようにする方法 (つまり、index メソッドの呼び出しでは、子のないイベント日のリストが必要ですが、show メソッドの呼び出しでは、単一のオブジェクトが必要です)次のレベルダウンで満たされたイベント日)

2) Ember が適切なタイミングでオブジェクトを「リロード」して、適切なコンテンツを埋める方法

たぶん、私はこれを間違って見ています-Emberのようなもののポイントを見逃しています-もしそうなら、適切なチュートリアルへのポインタを歓迎しますが、全体をロードする以外の方法を説明するものは(Emberサイトでも)見つかりません一気に木。ギグのデータを使用すると、これは遅く、明らかにブラウザーキラーであり、まったく間違っているように見えます.

学ぶのを手伝ってくれた StackOverflow の兄弟たちに感謝します!

編集

何らかの理由ですぐに反対票を投じられたので、コードを追加します。

クライアント側:

サーバ側:

編集 2

kertap の提案の後、async 属性を追加し、上記のシリアライザ コードを更新しました。

jsonはここにあります:

key: :eventsシリアライザーでパラメーターを使用しない"event_ids": [1,2,3,4]と、正しいと思うかもしれませんが、Ember はイベントを認識しません。

また、注目に値するのは、私がこれを行う場合:

その後、何も機能しません。私は得るError while loading route: Error: Assertion Failed: The response from a findAll must be an Array, not undefined

Ember と Rails の基本的な配線を機能させるのは、これほど難しいことではないと思います...

0 投票する
1 に答える
2478 参照

ruby-on-rails - アクティブ モデル シリアライザーとカスタム JSON 構造

API で Active Model Serializer gem を使用しようとしていますが、非常に単純だと思っていたものに苦労しています。

すべての JSON 応答はラップされた形式であり、すべての応答には最上位のメッセージとステータス プロパティがあり、データは content プロパティ内にあります。すべての JSON 応答は、この形式に従います。

「コンテンツ」プロパティの内容は、シリアライザーの出力を配置したい場所です。私の記事リストなど

私はこれを行う方法を理解できませんか?

どんな助けでも大歓迎です。

0 投票する
2 に答える
1524 参照

json - jsonをレンダリングするときにActiveModel::Serializerが呼び出されていませんか?

Rails 4.0.0 で active_model_serializers を使用して、json 応答をシリアル化しようとしています。ただし、使用すると、AMSクラスがまったく呼び出されたり使用されたりしていないようです

構成に問題があるのか​​、名前空間を間違って使用しているのかはわかりません。

Gemfileには次のものがあります:

コントローラー (app/controllers/api/v1/users_controller.rb 内):

UserSerializer (app/serializers/user_serializer.rb 内)

しかし、json 応答では、まだ完全なオブジェクトが表示されています。

render json: user, serializer: UserSerializer明示的に呼び出すことから、シリアライザーを API::V1 にネームスペースすることまで、すべてを試しましたが、結果は同じです。ここで何か不足していますか?

編集:これは、継承ではなくBaseController継承を行うことで修正されました。ただし、 に何が欠けていたのかは完全にはわかりません。ActionController::BaseActionController::MetalActionController::Metal

0 投票する
0 に答える
709 参照

ruby-on-rails - アクティブ モデル シリアライザーでキャッシュすると、応答時間が長くなります

シリアライザーをキャッシュしようとしていますが、キャッシュには応答時間が遅くなるという問題があります。

シリアライザーは次のようになります

cache_keyそして、私はこのようにクラスにaを追加しました

そしてコントローラーで

問題は、キャッシュがヒットしても、この実装がコントローラーを遅くすることです...

キャッシュの実装がなければ、同じリクエストが29msで返されましたか?

何が間違っているのでしょうか?

は、無効化属性の一部が変更されたときに無効化される一貫性のobject.cache_keyあるキャッシュ キーを返します...

シリアライザーは一貫したキャッシュキーも返します...そして、そのキャッシュされたバージョンが見つかります。オブジェクトに cache_key を委譲した場合...サイドロードされた関係 (所有者、投稿) が読み込まれません... 応答にそれらが含まれていませんか?

0 投票する
2 に答える
959 参照

javascript - Ember データの属している関連付け (JSON 形式?)

私は 'Author' と 'Publisher' (Rails) の 2 つのモデルを持っています。

Ember モデル ( JS Fiddle ) を正しくセットアップし、手動でストアにプッシュすると関連付けが機能します。ただし、/publishers インデックスを要求すると、発行者レコードのみが作成されます。

いくつかのタイプの JSON 応答を試しました。

著者がいる出版社

著者がいる出版社

著者が埋め込まれた出版社

助けてくれてありがとう!

0 投票する
1 に答える
6086 参照

ruby-on-rails - active_model_serializers を使用してネストされたオブジェクトのシリアライザーを選択する方法

Rails 4.0.0 を使用しており、定義済みオブジェクトを含むカスタム オブジェクトをこれらの定義済みオブジェクトのシリアライザーでシリアル化する方法を探しています。

例: シリアライザー StudentSerializer を持つモデル Student があります。次のように JSON オブジェクトをレンダリングします。

Student 用に作成された私のシリアライザーは、email 属性と id 属性のみをシリアライズします。しかし、私が電話すると:

すべての属性を持つ学生の完全なオブジェクトを取得します。JSON応答でネストされたオブジェクトに対してactive_model_serializersを使用してシリアライザーを選択することは可能ですか?

可能な解決策は、今説明したオブジェクト全体を含む新しいシリアライザーを作成し、それをシリアライザーとして使用することですが、可能であればこれを避けたいと思います。