Ich habe ein Problem in meinem Rails 4.2.6 Projekt mit ActiveModel Serializern (v0.10.2). Das Problem, das ich habe, ist, wenn kein Serializer an den Render-Aufruf im Controller übergeben wird, Rails keinen Serializer verwenden und das Objekt wie normal rendern. Die Übergabe des Serialisierungsklassennamens funktioniert jedoch wie erwartet.ActiveModel Serializer wird die Serializer-Klasse nicht implizit nachschlagen, um json serialisiert zu bekommen muss der Serializer explizit übergeben werden
render json: @tag # renders the whole object as if just to_json was called
render json: @tag, serializer: API::V1::TagSerializer # renders it correctly through the serializer
Derzeit ist die Steuerung dies in einem versioniert api Namespace ist API::V1::Tags
ich einen action_model_serializers initializer haben, und es ist Inhalt:
ActiveModelSerializers.config.adapter = :json_api
ActiveModelSerializers.config.key_transform = :camel_lower
ActiveModelSerializers.config.serializer_lookup_enabled = true
Und mein Serializer liegt in app/serializers/api/v1/tag_serializer.rb
:
class API::V1::TagSerializer < ApplicationSerializer
attributes :id, :name, :created_at, :updated_at
has_many :taggings, serializer: API::V1::TaggingSerializer
link :self do
api_v1_tag_url(object, host: 'localhost:3000')
end
end
Ich bin nicht qui Sicher, was ist falsch, ich habe versucht, alles neu zu starten, habe ich ActionController::Serialization
in meinem Anwendungscontroller, nichts, was ich versuche funktioniert.
Unsicher, ob dies ein verwandtes Problem, aber auch nach include: 'taggings'
auf die Render-Funktion und die has_many :taggings, serializer: API::V1::TaggingSerializer
in dem Serializer hinzugefügt, das einzige, was in den Beziehungen gemacht wird, ist die Tagging-ID und type: 'taggings'