問題タブ [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 投票する
6 に答える
10162 参照

ruby-on-rails-3.2 - 非 ActiveRecord オブジェクトで active_model_serializer を使用する

ActiveRecord::Base から派生したものではなく、データベースに保存されていないモデル オブジェクトがあります。そのためのシリアライザーを作成し(同じ名前+「シリアライザー」)、コントローラーでrender json: object_instance.

結果は の奥深くからの例外ですrender

シリアライザーをインスタンス化して呼び出すメソッドを実装しましたas_jsonが、その結果、オブジェクトにメソッドがありませんread_attribute_for_serialization

少なくとも Active Model Serializer に関する限り、オブジェクトを ActiveModel 互換オブジェクトのように動作させたいのですが、ドキュメントにはこれに関する参照がありません。

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

ruby-on-rails - ActiveModelSerializers を使用し、子を特定の Seriazlier でレンダリングする

私は次の関係を持っています ( RoR 3.2.13 と ancestry 2.0.0 を使用) 。

私のシリアライザーはかなり説明的で、次のようになります。

したがって、子への呼び出しは、MenuHeaderSerializer を使用して子を返す必要があります。それは理にかなっていますか?

私は、次のようなすべてのバリエーションであると思うものを試しました。

または、子供たちに MenuHeaderSerializer を強制的に使用させようとしていますが、途方に暮れています。どんな助けでも大歓迎です。

おそらく次のようなものです:

どうも

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

ruby-on-rails - オブジェクトに割り当てられたモデルでレンダリングに Active Model Serializer クラスを使用する方法

これが可能かどうかはわかりませんが、現在、to_json を介して出力している Ruby オブジェクトにいくつかの値を割り当てています。

お気に入り:

終わり

現在、notes は、私が期待するようにすべてを出力します。しかし、私は to_json によって呼び出されると思っていた NoteSerializer を持っています (これは私がこのセクションhttps://github.com/rails-api/active_model_serializers#render-jsonを読んでいる方法ですが、よくわかりません)。オブジェクト全体のデフォルト (updated_at、create_at ...) を返すのではなく、mi.notes に NoteSerializer を使用させるにはどうすればよいですか?

どうも

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

ruby-on-rails - Active Model Serializers は JSONP で動作しますか?

そうでない場合、AJAX リクエストで JSONP に準拠するようにするにはどうすればよいですか?

編集:私が達成したいことがはっきりしていないようです。たとえば、id、作成者、タグ、コンテンツなどの属性を含む Post クラスがあるとします。次の ActiveModel::Serializer は、JSON 応答のコーディングに使用するものです。

今コントローラーで、私は次のようなことをしたでしょう

このような JSON ファイルを生成するには

ここでの私の目的は、JSONP を使用することです。これにより、誰かがリクエストで jsoncallback パラメーターを渡すと (GET '/posts?jsoncallback=callback_function' など)、次を生成できるようになります。

現在、私は Post オブジェクトで to_json を使用し、結果を @posts_json という変数に格納し、次にコントローラーで Content-Type を text/javascript として指定し、次のような html.erb ファイルをレンダリングしています。

このソリューションが本当に醜いことに同意していただけると思います。問題は、コントローラーで使用している to_json メソッドが原因で問題が発生し始めていることです。

そのため、ActiveModel::Serializer を使用して同じ機能を取得したいと考えています。どうすればそれを行うことができますか?

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

ember.js - async hasMany 関係のシリアライズ

私は EmberJS にかなり慣れていないので、私が取り組んでいる新しいアプリでいくつかの hasMany および多対多の関係を維持しようとして、夜のほとんどをいじっていました。

Ember Data を使用して、使用ActiveModelAdapterしている Rails バックエンドに接続していますActiveModelSerializers

私が使用している Ember と Ember Data の次のバージョンを使用しています。

私が抱えている基本的な問題は、レコードを保存するときに、関連付け ID がサーバーに送り返されないことです。

ActiveModelSerializerのソースを調べたところ、hasMany のシリアル化がスキップされていることがわかりました

これまでのところ機能している次の基本的なソリューションを思いつきましたが、Ember の規則とベスト プラクティスに従うよりクリーンなソリューションがあるかどうか疑問に思っていました。

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

ruby-on-rails - Rails コンソールの active-model-serializer の JSON 出力を整形する

Railsコンソールでactive-model-serializer出力をテストしており、出力をきれいにする方法を探しています。これまでに見つけた唯一の解決策は次のとおりです。

それは回り道のように思えます。「より良い方法」はありますか?

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

ember.js - Ember.JS ActiveModelAdapter および Active Model Serializers のデフォルトの動作

シンプルなアクティブ モデル シリアライザーがあります。

カテゴリとユーザーのシリアライザーもあり、期待どおりに動作します。私はこのペイロードを取得します:

ただし、それらは ember にロードされないようです。

Ember インスペクタを確認すると、データがロードされていません。ActiveModelSerializer はどのような形式を期待していますか? アクティビティをロードしますが、カテゴリまたはユーザー属性はロードしません。

0 投票する
4 に答える
4148 参照

ruby-on-rails - アクティブなモデル シリアライザー、応答のレンダリングに使用されるシリアライザーのテスト

RailsコントローラーからのJSON応答をレンダリングするために、アクティブモデルシリアライザーを使用しています。

次のようなコントローラー アクションがあります。

Rspec コントローラーのテストで使用されたシリアライザーをテストできるようにしたいと考えています。テストからシリアライザーへの参照を取得することは可能ですか?

アップデート:

これはシリアライザの正しい使い方ではないと思います。シリアライザー自体に、条件付きで属性を含めるためのロジックが追加されました。コントローラーは、どのシリアライザーを使用するかを気にする必要はありません。

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

ruby-on-rails - 割り当て前の ruby​​/rails 変数スコープ

アップデート:

みんなありがとう、これで行きました:

ここでこの res プロパティの割り当てを処理して、レンダリング呼び出しに使用できるようにするより良い方法はありますか? 全体として、このかなり臭い方法を改善する方法を考えているだけです.

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

ruby-on-rails - 何も変更されていない場合でも、activeModel::dirty レコードが変更されます

ActiveModel::Dirty ライブラリを使用しています。次のコードがあります。

ユーザーがフォームで何かを変更すると、このメソッドはコントローラーの動作を変更します。問題は、フィールドの 1 つが日時であり、なんらかの理由で、日時が変更されたかどうかに関係なく、日時が毎回変更されると見なしていることです。

コンソールは、変更がないことを教えてくれます。上記の puts ステートメントがコンソールに表示する内容は次のとおりです。

私の基本的な質問は、previous_changes が毎回変更があると考える理由と、それを修正するにはどうすればよいかということです。