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_at
、updated_at
などのシリアライザには含まれていない他の属性がいくつか含まれているため、ブラウザアプリケーションに送信されるJSONには含まれません。
私の問題は、私のアプリケーションがsong_serializer
を完全に無視しているようで、曲のすべてのデータベースフィールドを含むJSONを送信しているということです。どんな入力も歓迎されます。