Использование нескольких аргументов для действия контроллера ответа json

В моем поисковом контроллере я использую вызов json для поиска по сайту. Теперь мне нужно передать пользовательский метод экземпляра в файл JS. Проблема в том, когда я пытаюсь отделить запятую нужным методом (to_json) Я получаю эту ошибку в моей консоли:

SyntaxError (/game_app/app/controllers/search_controller.rb:13: syntax error, unexpected '}', expecting =>):
  app/controllers/search_controller.rb:13: syntax error, unexpected '}', expecting =>

Код контроллера

def autocomplete
  render json: Game.search(params[:query], fields: [{ title: :word_start }], limit: 10), Game.to_json(methods: [:box_art_url])
end

Код модели

class Game < ActiveRecord::Base
  def box_art_url
    box_art.url(:thumb)
  end
end

1 ответ

Решение

Вот как бы вы решили проблему с ActiveModelSerializer.

# Gemfile
# ...
gem 'active_model_serializers'

# app/controllers/games_controller.rb
# ...
def autocomplete
  @games = Game.search(params[:query], fields: [{ title: :word_start }], limit: 10)
  render json: @games
end

# app/serializers/game_serializer.rb
class GameSerializer < ActiveModel::Serializer
  attributes :title, :box_art_url
end

Если вы хотите использовать другой сериализатор для представления результатов поиска игр по сравнению с обычным представлением, вы можете указать сериализатор:

# app/controllers/games_controller.rb
# ...
def autocomplete
  @games = Game.search(params[:query], fields: [{ title: :word_start }], limit: 10)
  render json: @games, each_serializer: GameSearchResultSerializer
end
Другие вопросы по тегам