0

我有一个与这个问题中提到的问题非常相似的问题。但是,答案中描述的解决方案都不起作用。

当尝试访问我的路由时,无论有无.json扩展,以及使用 jQuery$.ajax$.getJSON(使用正确的 Accept 标头),我收到以下异常:

缺少模板用户/事件/索引、应用程序/索引与 {: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 发出密码重置请求时,我们在自定义设计控制器中遇到了类似的问题(请确保也正确使用 CSRF)。

有问题的代码

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

工作代码

responds_to :json

对允许更多路由接受 JSON 的安全方面不满意,但我们稍后会进一步锁定它。

于 2014-07-18T04:43:01.840 回答