10

batman-rails gemを介して、node.jsフレームワークbatman.jsで実行されるレールアプリを取得しようとしています。

Rails コントローラーで json を使用して応答すると、毎回 406 エラーが発生しますが、その理由はわかりません。これが私のコントローラーです:

  respond_to :json

  def index
    respond_with Sample.all
  end

これにより、何があっても406になります。これはバットマンとは関係ないと思いますが、Rails そのものです。しかし、参考までに、私のバットマンコードは次のとおりです。

  index: (params) ->
    TopNavTemplate.Sample.load (err) -> throw err if err
    @set 'samples', TopNavTemplate.Sample.get('all')

そして、私のindex.html.erbファイルは単に「index」と言っています.batmanではまだ何もしていません.

406 JSON 関連の質問がたくさんありますが、まだ自分の状況に適用できていません。Railsにrespond_with JSONを作成するために間違っていることはありますか?

4

1 に答える 1

25

よし、私はあなたの状況をチェックするための非常に簡単なアプリを作りました:

SamplesController.rb

class SamplesController < ApplicationController
  respond_to :json

  def show
    respond_with Sample.find(params[:id])
  end

  def index
    respond_with Sample.all
  end
end

と にアクセス/samples.jsonsamples/1.jsonたところ、意図したとおりに機能しました。ただし、/samplesand /samples/1(.json 拡張子なし) に移動すると、406 エラーが発生しました。

.json 拡張子なしで URL を機能させるには、config/routes.rb次のようにファイルを変更する必要があります。

resources :samples, defaults: {format: :json}

それ以外の場合、Rails アプリケーションは HTML 応答で要求に応答しようとします。

于 2012-09-07T17:26:53.590 に答える