0

この質問で述べたものと非常によく似た問題があります。ただし、回答に記載されている解決策はいずれも機能していません。

.json拡張機能の有無にかかわらず、jQuery$.ajaxと(正しいAcceptヘッダーを使用して)ルートにアクセスしようとすると$.getJSON、次の例外が発生します。

欠落しているテンプレートusers/events / index、application / index with {:handlers => [:erb、:builder、:coffee、:haml]、:formats => [:json]、:locale => [:en、:en ]}。

このコントローラーにはJSON応答のみが必要なので、このコントローラーのテンプレートは必要ありません。

私のコントローラーは次のように定義されています:

class Users::EventsController < ApplicationController

  respond_to(:json)

  def index
    # Some extra code here...
    respond_with(@data)
  end
end

これらのルートを(「ユーザー」スコープの下で)配置すると、次のようになります。

resources(:events, :only => [:index, :show]) do
  collection do
    get ':year/:month', :to => 'events#index', :format => :json
  end
end

ブロックを追加してdo |format|明示的にJSONとしてレンダリングする場合、問題は解決しません。

Rails 3.1.1と3.2の両方でこれを試したところ、同じ問題が発生しました。

「.json」でのアクセスが機能しないため、サーバー側の問題のように見えます。私は何が欠けていますか?

4

2 に答える 2

1

もう少しいじくり回した後、私はこの問題の実際の原因が何であるかを知りました。

コントローラのある時点で、次のコードブロックがありました。

@array.map { |a| return a['id'] }

returnキーワードが誤って使用されたため、アクション全体が事前に返され、問題が発生しました。

于 2012-09-01T02:22:41.707 に答える
0

JSONを介してパスワードリセットリクエストを発行するときに、カスタムDeviseコントローラーで同様の問題が発生しました(CSRFも正しく使用してください)。

問題のあるコード

responds_to :json => [:create, :our_custom_method1, :our_custom_method2]

作業コード

responds_to :json

より多くのルートがJSONを受け入れることを許可するというセキュリティの側面には満足していませんが、後でさらにロックダウンします。

于 2014-07-18T04:43:01.840 に答える