首页 > 解决方案 > 我如何在 JSON 中传递 API 的结果

问题描述

module Api
      module V1
        class CalculatorsController < ApplicationController
          def compute
            @fields = Calculator.find_by(slug: params['id']).fields.result
            render json: @fields, root: 'result', adapter: :json
            @fields.each do |field|
              cal_res = CalculatorResolver.call(field.calculator)
              res = cal_res.each_with_object({}) do |(key, value), result|
                result[key[:value]] = value.each_with_object({}) do |v, sel|
                  sel[v[:selector].downcase] = v[:value]
                end
              end
              res.each do |key, value|
                CalculationResolver.result(value, key)
              end
            end
          end
        end
      end
    end
    
    class Field < ApplicationRecord
      belongs_to :calculator
      before_create :set_selector
      enum kind: { form: 0, parameter: 1, result: 2 }
      enum unit: { month: 0, date: 1, times: 2 }
      validates :type, :label, :kind, presence: true
      validates :unit, inclusion: { in: units.keys }
      private
      def set_selector
        return if selector.present?
        selected_rows_count = Field.where(kind: kind).count
        if selected_rows_count.positive?
          previous_number = Field.where(kind: kind).last.selector[1]
          self.selector = kind[0].upcase + previous_number.next.to_s
        else
          self.selector = "#{kind[0].upcase}1"
        end
      end
      def result
        0
      end
    end

 class FieldSerializer < ActiveModel::Serializer
      attributes :name, :result
      def name
        object.name.parameterize.underscore
      end
    end

我有类 Field,API/V1/compute 和类 Field Serializer
在 API/V1/compute 结果是 CalculationResolver.result(value, key)。它是数字的。
我需要在类字段方法结果中传递结果
我该怎么做?

标签: ruby-on-railsjsonrubyjsonresponse

解决方案


推荐阅读