Rails format.json返回一个字符串,如#<activemodelserializers :: adapter :: json:0x0055f877758d78>而不是实际的JSON

时间:2017-06-21 09:11:25

标签: json activerecord rails-activerecord ruby-on-rails-4.2

这是我关于Stack Overflow的第一个问题,请温柔地对待我: - )

我有一个基于开源项目的Rails项目(Rails 4.2.6) - Netflix的Scumblr(https://github.com/Netflix/Scumblr)。该项目是Netflix原始项目的定制,以满足客户的需求。

有一个控制器,tags_controller.rb,突然停止返回标签(采用JSON格式),而是返回一个字符串,如“#”。 在调查数据库时,我注意到标签是重复的,可能是由于我编写的Rake任务中的一个错误,用于自动将数据插入到应用程序中。我删除了所有重复项,但问题仍然存在。

目前只在生产服务器上出现此问题。在我自己的开发VM上,它工作正常。

我没有看到任何日志中的任何错误,而且我一直在试图理解出了什么问题,我已经敲了几个小时。

Bellow是控制器的代码:

    class TagsController < ApplicationController
        authorize_resource

        def index
            q = "%#{params[:q]}%"
            @tags = Tag.where("lower(name) like lower(?)", q).page(params[:page]).per(params[:per_page])

            respond_to do |format|
                format.json { render json: @tags, meta: {total: @tags.total_count} , adapter: :json} 
            end
        end
    end

.page(...)。per(...)用于分页(使用Kaminari)。删除它们没有任何效果。

以下是模型:

    class Tag < ActiveRecord::Base
      #attr_accessible :color, :name
      has_many :taggings
      has_many :taggables, through: :taggings, source: :taggable, :source_type=>""


      def tagged(type)
        self.taggings.where(:taggable_type=>type)
      end

      def name_value
        if(self.value.present?)
          "#{self.name}: #{self.value}"
        else
          self.name
        end
      end
    end

你们有没有遇到过这样的问题? 你会如何解决这个问题?我此刻无能为力:-(。 任何帮助将不胜感激。

提前致谢, 阿萨夫

更新:我发现标签名称在我的开发虚拟机上也是重复的,它仍然正确地提供标签,因此它排除了标签重复的原因。我怀疑它与将gems更新为更新版本有关,但由于Gemfile / Gemfile.lock非常大,我不知道如何隔离相关的gem(如果有的话)。

有什么想法吗?

0 个答案:

没有答案