Rails 6 jbuilder неправильно отображает массив - PullRequest
0 голосов
/ 04 октября 2019

У меня проблема с правильным отображением массива с помощью JBuilder на Rails 6 (режим только API).

У меня в основном список регистрационных номеров, которые я хочу получить с помощью запроса API

Мое представление индекса выглядит так:

# frozen_string_literal: true

json.array! @registration_plates,
            partial: 'registration_plates/registration_plate',
            as: :registration_plate


Мое представление шоу выглядит так:

# frozen_string_literal: true

json.partial! 'registration_plates/registration_plate',
              registration_plate: @registration_plate


И, наконец, частичное _registration_plate.json.jbuilder очень просто:

# frozen_string_literal: true

json.id registration_plate.id
json.plate registration_plate.plate.to_s

Я получаю нормальный ответ от сервера: response

Но вместо массива я получаю серию объектов JSON

postman

У кого-нибудь была похожая проблема, или у вас есть идеи, как ее решить?

Чем вы заранее.

РЕДАКТИРОВАТЬ

Кроме того, мой контроллер настроен для рендеринга jbuilder, а не json


  # GET /registration_plates
  def index
    @registration_plates = RegistrationPlate.all

    render @registration_plates
  end

  # GET /registration_plates/1
  def show
    render @registration_plate
  end

И если я изменю действие индекса так, чтобы оно выглядело как

  def index
    @registration_plates = RegistrationPlate.all

    render json: @registration_plates.to_json(only: %i[id plate])
  end

, я получаю правильное значениевывод, но тогда я не поддаюсь единственной цели jbuilder

1 Ответ

1 голос
/ 04 октября 2019

обновить индекс, чтобы удалить render @registration_plates

  # GET /registration_plates
  def index
    @registration_plates = RegistrationPlate.all
  end

render @registration_plates визуализирует _registration_plate.json.jbuilder напрямую, не вдаваясь в index.json.jbuilder

...