Передача параметров в сериализатор при разбиении на страницы с помощью API виноград - PullRequest
0 голосов
/ 15 января 2020

У меня возникают трудности при передаче параметров в мой сериализатор из Grape API при использовании нумерации страниц с гемом api-pagination.

Конечная точка винограда:

desc "Get objects"
params do
  requires :group_id, type: Integer, desc: 'Group ID.'
  requires :extra_param, type: Integer, desc: 'Extra Param.'
end
paginate per_page: 20 # This paginates, with a default of 20 per page
oauth2 # This endpoint requires authentication
get '/objects', each_serializer: ObjectSerializer, extra_param: params[:extra_param] do
  group = Group.find(params[:group_id])
  objects = Object.where(group_id: group.id)
  paginate objects
end

Приведенное выше сообщение приводит к следующему сообщению об ошибке:

NoMethodError (undefined method `[]' for #<Grape::Validations::ParamsScope:0x00007fd132e85a98>):

Передача параметров в сериализатор работает путем удаления нумерации страниц путем замены строки 'paginate objects' следующим текстом:

render objects, each_serializer: ObjectSerializer, extra_param: params[:extra_param]

Обновление:

Следующее не обрабатывает sh, но переданный параметр равен nil в сериализаторе с использованием instance_options [: extra_param]

desc "Get objects"
params do
  requires :group_id, type: Integer, desc: 'Group ID.'
  requires :extra_param, type: Integer, desc: 'Extra Param.'
end
paginate per_page: 20 # This paginates, with a default of 20 per page
oauth2 # This endpoint requires authentication
get '/objects', each_serializer: ObjectSerializer, extra_param: params[:extra_param] do
  group = Group.find(params[:group_id])
  objects = paginate Object.where(group_id: group.id)
  render objects, each_serializer: ObjectSerializer, extra_param: params[:extra_param]
end
...