我的Rails 4项目中有以下文件:
lists_controller.rb
class Api::V1::ListsController < Api::V1::ApiController
before_action :set_list, only: [:show]
attr_accessor :list
def show
respond_with list
end
private
def set_list
@list = List.where(id: params[:id]).first
render_list_not_found if @list.nil?
end
def render_list_not_found
render json: { "list" => { message: "List not found" } }, status: 404
end
end
list_serializer.rb
class ListSerializer < ActiveModel::Serializer
embed :ids, include: true
attributes :id, :title, :start_date, :end_date
has_many :items
end
当我点击具有存在列表的id的API时,我得到了正确的json。但是当你传递一个无效的身份证时,你会认为你会得到这个:
{
"list": {
"message": "List not found"
}
}
但是得到这个:
{
"lists": [
[
"list",
[
[
"message",
"List not found."
]
]
]
]
}
知道为什么会这样吗?
答案 0 :(得分:0)
似乎即使使用简单的渲染也会调用活动模型序列化程序。我正在使用gem的0.9.1
版本,但降级为0.9.0
似乎可以解决问题。很奇怪。