У меня возникают трудности при передаче параметров в мой сериализатор из 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