2016-11-27 10 views
1

JSONオブジェクトをレンダリングするために、アクティブモデルシリアライザを使用して5つのapiを構築しています。私はバージョンの名前空間を使って次のようにコントローラを構造化しました。私は歌を表示する私のリソースの一つを示します。名前空間(バージョン管理)付きのアクティブモデルシリアライザ

application_controller.rb(簡体字):

class ApplicationController < ActionController::API 
    include ActionController::Serialization 
end 

songs_controller.rb

class Api::V1::SongsController < ApplicationController 
    before_action :set_song, only: [:show, :update, :destroy] 
    def show 
    authorize @song 
    render json: { song: @song } 
    end 
    private 
    def song_params 
    params.require(:song).permit(:title, :artist, :band_id) 
    end 
    def set_song 
    @song = Song.find(params[:id]) 
    end 
end 

songs_serializer.rb

class SongSerializer < ActiveModel::Serializer 
    attributes :id, :title, :band_id 
end 

曲のモデルの名前がApi::V1になっていません。ソングモデルには、artist,created_atupdated_atなどのシリアライザには含まれていない他の属性がいくつか含まれているため、ブラウザアプリケーションに送信されるJSONには含まれません。

私の問題は、私のアプリケーションがsong_serializerを完全に無視しているようで、曲のすべてのデータベースフィールドを含むJSONを送信しているということです。どんな入力も歓迎されます。

答えて

0

私の頭を私が気にかけているよりも長い間叩いた後、私の問題は私がJSONをレンダリングしていた方法で私のsongs_controllerにあるようでした。代わりに render json: { song: @song } を使用しました。 render json: @song を使用しました。これでシリアライザが使用されます。

関連する問題