Удаление массива в аргумент вызова API HTTPart throws `args.ids.split не является ошибкой функции`.Как это исправить? - PullRequest
0 голосов
/ 09 июня 2019

У меня есть функция с именем value, которая возвращает этот массив ниже:

[1893, 1724, 257344, 353491, 301337, 305470, 348, 264660, 76341, 68726]

Однако для большей ясности, вот value function, который возвращает value array выше: это модуль, подобный ListInfoService ниже, и имеет 4 аргумента, которые являются аргументами, предоставленными в методе значений ниже ValueSearchService::ValueSearch.new(params[:one], params['two'] = 1_000_000, params[:three], params[:four]).values

def value
    params = set_params_if_not_added
    value_search = ValueSearchService::ValueSearch.new(
      params[:one],
      params['two'] = 1_000_000,
      params[:three],
      params[:four]
    ).values
    value_search['data']
  end

У меня также есть функция, в которой аргумент ids должен принимать результат значения (то есть числа, разделенные запятыми):

module ListInfoService
  class ListInfo
    include HTTParty
    base_uri 'localhost:7000'

    def initialize(ids, limit, offset)
      @options = { query: { ids: ids, some_params: some_params, another_params: another_params } }
    end

    def movies
      self.class.get('/list', @options)
    end
  end
end

URL, который я интерпретировал, чтобы заставить модуль работать выше:

localhost:7000/list?ids=2,3,6&some_params=5&another_params=0

Но когда я вызываю функцию, опуская результат value в вызов функции ниже, я получаю args.ids.split is not a function ошибку:

list_info = ListInfoService::ListInfo.new(
   value,
   params[:some_params],
   params[:another_params]
).movies

render json: list_info

Итак, как мне убедиться, что мой аргумент ids принимает список чисел через запятую?

Примечание : использую HTTParty, Rails5.1, Ruby 2.6

Я думаю, что проблема в массиве value, который я поставил внутри ListInfoService::ListInfo, который ищет API. Если я, возможно, смогу изменить способ вызова API в модуле или найти способ предоставления необходимого списка идентификаторов, разделенных запятыми, это сработает.

1 Ответ

0 голосов
/ 09 июня 2019

Fixed.Это то, что я сделал, чтобы сделать эту работу.Имейте в виду, что эта ошибка возникает в результате передачи массива в аргумент вызова API HTTParty.Следовательно, args.ids.split is not a function Ошибка.

Исправление для меня это просто путем преобразования value в string вместо array путем простого добавления .join(', ') к ответу в методе.См. Ниже:

  def value
    params = set_params_if_not_added
    value_search = ValueSearchService::ValueSearch.new(
      params[:one],
      params['two'] = 1_000_000,
      params[:three],
      params[:four]
    ).values
    value_search['data'].join(', ') # This will solve it.
  end

Таким образом, когда вы добавляете value результат к определенному вызову модуля HTTParty к аргументу ids, он принимает его как строку и работает нормально.

list_info = ListInfoService::ListInfo.new(
  value, # Note that this line is `ids` under ListInfoService::ListInfo argument and cant be array.
  params[:some_params], 
  params[:another_params]).movies 

render json: list_info
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...