0

私の検索コントローラーでは、サイト検索に json render 呼び出しを使用しています。カスタム インスタンス メソッドを 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
4

1 に答える 1

1

これは、ActiveModelSerializers で問題を解決する方法です。

# 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
于 2015-12-01T14:22:00.897 に答える