我正在尝试在Rails 4.0.0中使用active_model_serializers来序列化我的json响应。但是,当我使用
时,AMS类似乎根本没有被调用/使用render json: user
我不确定是否存在某些配置问题,或者我是否错误地使用了命名空间。
Gemfile有:
gem 'active_model_serializers', '0.8.0'
Controller(在app / controllers / api / v1 / users_controller.rb中):
module API
module V1
class UsersController < API::V1::BaseController
def show
user = User.find(params[:id])
render json: user
end
end
end
end
UserSerializer(在app / serializers / user_serializer.rb中)
class UserSerializer < ActiveModel::Serializer
attributes :id, :first_name, :last_name
end
但是在json的回应中,我仍然看到了完整的对象,即
{"id":1,"first_name":"Test","last_name":"User1","created_at":"2013-12-26T07:12:02.618Z","updated_at":"2013-12-26T07:12:02.618Z"}
我已经尝试了从显式调用render json: user, serializer: UserSerializer
到命名空间序列化器到API :: V1的所有内容,结果是相同的。我在这里错过了什么吗?
修改:这是通过将BaseController
继承自ActionController::Base
而不是ActionController::Metal
来修复的。但不完全确定ActionController::Metal
中缺少的是什么。
答案 0 :(得分:1)
我在Rails3上遇到了类似的问题,我不得不将此行添加到app initializer文件夹
ActionController::API.send(:include, ActionController::Serialization)
检查是否必须与您的事情类似
ActionController:: Metal.send(:include, ActionController::Serialization)
答案 1 :(得分:1)
包括ActionController :: Serialization
ApplicationController中的