Использование нескольких аргументов для действия контроллера ответа 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