2012-09-07 14 views
9

node.jsフレームワークbatman.jsで動作するレールアプリをbatman-rails gem経由で取得しようとしています。jsonと応答するとエラーが発生する

私のレールコントローラのjsonに応答すると、毎回406エラーが発生し、その理由がわかりません。ここに私のコントローラがあります:

respond_to :json 

    def index 
    respond_with Sample.all 
    end 

これは私に406を与えます。私はこれがバットマンに関連しているとは思っていませんが、それ自体が軌道に乗っています。しかし、良い対策のために、ここに私のバットマンコードです:

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

そして、私のindex.html.erbファイルは、単に「インデックス」は、それは本当にまだバットマンと何もしていないと言います。

多くの406のJSON関連の質問がありますが、私は実際に自分の状況にまだそれらを適用できませんでした。 JSONをrespond_withRailsにするのに間違っていることがありますか?

答えて

24

さてさて、私はあなたの状況をチェックアウトすることは非常にシンプルなアプリを作った:私は/samples.jsonsamples/1.jsonを訪問したときに意図したとおり

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/samples/1(.json拡張子なし)に行ったとき、私は406のエラーを受けました。

.json拡張子のないURLの仕事を持つために、あなたは次のようにあなたのconfig/routes.rbファイルを変更する必要があります。

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

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

+0

+1ありがとうございます! –

+2

バットマンのRailsストア・アダプターがデフォルトですべてのリクエストに.jsonを追加するようになった今、 – Kombo

関連する問題