【问题标题】:how to fix "Rendered ActiveModel::Serializer::Null with Hash"如何修复“Rendered ActiveModel::Serializer::Null with Hash”
【发布时间】:2019-03-29 06:46:42
【问题描述】:

我正在尝试为用户模型编写 API,我只需要返回两列并进行一些修改(附加字符串)
一切正常,我什至得到了正确的结果,但是当我看到状态代码显示“500”时,当我检查日志时,它显示以下错误

[active_model_serializers] 使用哈希渲染 ActiveModel::Serializer::Null

以下是代码
1. users_controller.rb

class Api::V1::UsersController < Api::V1::ApiController

  # GET
  def pl_details
    render json: {pl: current_user.pl_url, enabled: current_user.personal_calendar_enabled}, status: :success
  end
...
end
  1. user.rb
...
def pl_url
  return "#{Rails.application.secrets.app_host}/#{self.calendar_url_token}"
end
...
  1. user_serializer.rb
class UserSerializer < ActiveModel::Serializer
  attributes :id, :firstname, :lastname, :email
end

【问题讨论】:

    标签: active-model-serializers rails-api


    【解决方案1】:

    没关系,
    我只是这样做了,我使用了一个单独的序列化器来避免错误,以下是方法

    class Api::V1::UsersController < Api::V1::ApiController
    
      # GET
      def pl_details
        render json: current_user,serializer: PLSerializer, status: :success
      end
    ...
    end
    

    在PLSerializer内部

    class PLSerializer < ActiveModel::Serializer
      attributes :pl, :personal_calendar_enabled
    
      def personal_link
        current_user.pl_url
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2017-02-24
      • 2020-03-11
      相关资源
      最近更新 更多