Я запускаю приложение Rails api-only с моделью продукта. Я создал продукты на бэкэнде с помощью activeadmin. При использовании почтальона для просмотра отдельных продуктов с соответствующим идентификатором продукта он возвращает данные json в порядке, но когда я пытаюсь просмотреть весь продукт по адресу: api / v1 / products
Я получаю эту ошибку:
Запущен GET "/ api / v1 / products /" для :: 1 в 2019-05-28 11:12:47 +0100
Обработка Api :: V1 :: ProductsController # index как JSON
Параметры: {"product" => {}}
Цепочка фильтров остановлена как: set_product отрендерено или перенаправлено
Завершено 404 Не найдено за 5 мс (Просмотры: 0,2 мс | ActiveRecord: 4,9 мс)
Вот мой контроллер:
module Api
module V1
class ProductsController < Api::V1::ApiController
# do not authenticate users before viewing product listing or individual products
before_action :authenticate_user!, except: %i[index show]
before_action :set_product, only: %i[index show]
# GET /product
def index
product = Product.all.order('id')
render json: { success: true, data: product }, status: :ok
end
# GET /products/:id
def show
@product = Product.find(params[:id])
render json: { success: true, data: @products }, status: :ok
end
private
def set_product
@products = Product.find(params[:id])
rescue StandardError => error
render json: { success: false, error: error }, status: 404
end
def product_params
params.require(:product).permit(:title, :release_date, :release_time, :description, :price, :brand)
end
end
end
end
Вот мои взгляды API:
_product.json.jbuilder
json.id product.id
json.title product.title
json.description product.description
json.release_date product.release_date
json.release_time product.release_time
json.price product.price
json.brand product.brand
index.json.jbuilder
json.array! @products, partial: 'products/product', as: :product
show.json.jbuilder
json.product do
json.partial! 'product'
end
1032 * маршруты *
namespace :api do
namespace :v1, defaults: { format: :json } do
devise_scope :user do
get :status, to: 'api#status'
resource :user, only: %i[update show] do
get :profile
end
end
resources :products, only: [:index, :show]
end
end