我在Rails中遇到串行器問題。我試圖爲我的模型呈現自定義json。爲此,我將active_model_serializer添加到我的Gemfile並編寫了一些Serializer。問題是,當我渲染JSON時,它渲染我的整個對象而不是調用序列化程序。ActiveModel :: Serializer在渲染JSON時未使用
這裏是我的代碼
用戶串行
class UserSerializer < ActiveModel::Serializer
attributes :id, :email
end
用戶模型
# Class model for users
class User < ActiveRecord::Base
...
end
響應模型
class Response
attr_accessor :status, :data
end
顯示方法
def send_response(*args)
r = Response.new
r.status = args[0] # This is the HTTP code
r.data = args[1] # This is a user object
render json: r, status: r.status
end
的Gemfile
source 'https://rubygems.org'
gem 'rails', '4.2.0'
gem 'pg'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'devise'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'omniauth'
gem 'active_model_serializers'
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
是什麼'Response'? – apneadiving
它是一個象徵HTTP響應的Ruby對象。我會用它的代碼編輯這個問題,如果你想輕鬆理解它 – Aeradriel
從控制檯試試這個併發布你的響應..'puts JSON.pretty_generate(UserSerializer.new(User.first).serializable_hash)' – errata