Использование Ransack в приложении только на Rails 5 API
Я недавно начал работать над приложением только на Rails 5 API и включил jsonapi-resources
так же как ransack
легко фильтровать результаты для любого запроса. По умолчанию, jsonapi-resources
обеспечивает базовую функциональность CRUD, но для того, чтобы вставить параметры поиска для ransack
Мне нужно переписать метод индекса по умолчанию в моем контроллере:
class CarsController < JSONAPI::ResourceController
def index
@cars = Car.ransack(params[:q]).result
render json: @cars
end
end
Теперь это работает нормально, но больше не использует jsonapi-resources
генерировать вывод JSON, что означает, что вывод изменился с:
# ORIGINAL OUTPUT STRUCTURE
{"data": [
{
"id": "3881",
"type": "cars",
"links": {
"self": ...
},
"attributes": {
...
}
}]
}
Для вывода по умолчанию Rails JSON:
[{
"id": "3881",
"attr_1": "some value",
"attr_2": "some other value"
}]
Как я могу сохранить исходную структуру вывода при исправлении метода индекса в этом контроллере?
1 ответ
Попробуйте использовать гем https://github.com/tiagopog/jsonapi-utils. В вашем случае проблема будет решена следующим образом:
class CarsController < JSONAPI::ResourceController
include JSONAPI::Utils
def index
@cars = Car.ransack(params[:q]).result
jsonapi_render json: @cars
end
end