使用活动模型序列化程序的简单json渲染的异常响应

时间:2014-12-07 04:43:21

标签: ruby-on-rails json ruby-on-rails-4 active-model-serializers

我的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."
                ]
            ]
        ]
    ]
}

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

似乎即使使用简单的渲染也会调用活动模型序列化程序。我正在使用gem的0.9.1版本,但降级为0.9.0似乎可以解决问题。很奇怪。