2016-12-08 17 views
1

私はrails-apiプロジェクトで、active model serialiazerを使用しています。しかし、残念ながらその期待通りに動作しません。これは私のV1::HuntsControllerアクティブなモデルシリアライザが正しい属性で応答しません

class V1::HuntsController < V1::MainController 
    def index 
    render json: Hunt.all 
    end 
end 

私の狩りのシリアライザは、この

class HuntSerializer < ActiveModel::Serializer 
    belongs_to :user 
    attributes :id,:title,:picture_url,:clue 
    private 
    def picture_url 
    object.picture.url 
    end 
end 

のように見えている。しかし、私のresponseに私はhuntからすべての属性を取得しています。バージョン管理の問題を避けるためにシリアライザを明示的に定義しようとしました。

render json: {data: Hunt.all } ,each_serializer: HuntSerializer 

しかし、何も動作していないようです。ログには、私が見ることができる、

[active_model_serializers] Rendered V1::HuntSerializer with Hash (32.36ms) 

ここで起こっていることは何ですか?どんな助けもありがとう。

答えて

1

render json: Hunt.all, each_serializer: HuntSerializer(データルートは必要ありません)

が、その後picture_url関数の本体にbyebugを入れ、シリアライザがヒットされることを確認してみてください。 byebugがヒットした場合は、実際にシリアライザを使用しています。 (gemfileにgem byebugが含まれている必要があります)

+0

質問で明確に言及したように、あなたは運がないと言った提案を試みました。私は '' debugger''も試してみましたが、呼び出されていませんでした。ここでは何が起こっているのかわからない。 – raj

+0

ごめんなさいあなたが何を意味しているのか理解しました。私はそれとその作業を試みました。なぜ '' {data:Hunt.all} ''がうまくいかないのですか?それは '' as_json''メソッドを呼びませんか? – raj

+0

AMSがオブジェクトを検査して対応するシリアライザ(HuntSerializer)を検索できないようにしています.2)each_serializerを使用しても、 '{data:Hunt.all} 'はアレイ。 – Alex

関連する問題