Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3.1:持久性“;模板丢失";使用JSON格式_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails 3.1:持久性“;模板丢失";使用JSON格式

Ruby on rails Rails 3.1:持久性“;模板丢失";使用JSON格式,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个非常类似的问题。然而,答案中描述的解决方案都不起作用 尝试访问我的路由时,无论是否使用.json扩展名,以及使用jQuery$.ajax和$.getJSON(使用正确的接受头),我都会遇到以下异常: 缺少模板用户/事件/索引,应用程序/索引带有{:handlers=>[:erb,:builder,:coffee,:haml],:formats=>[:json],:locale=>[:en,:en]} 因为我只需要这个控制器的JSON响应,所以我没有也不想要这个控制器的任何模板 我的控制器

我有一个非常类似的问题。然而,答案中描述的解决方案都不起作用

尝试访问我的路由时,无论是否使用
.json
扩展名,以及使用jQuery
$.ajax
$.getJSON
(使用正确的接受头),我都会遇到以下异常:

缺少模板用户/事件/索引,应用程序/索引带有{: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
添加
do | format |
块并显式将其呈现为JSON时,问题仍然存在

在Rails 3.1.1和3.2上都尝试过这个,但得到了相同的问题


这看起来像是服务器端问题,因为使用“.json”访问不起作用。我遗漏了什么?

经过进一步的修补,我发现了这个问题的真正原因

在控制器的某个点上,我有以下代码块:

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

return
关键字使用不正确,导致整个操作提前返回,从而导致问题。

当通过JSON发出密码重置请求时,我们在自定义Desive controller中遇到了类似问题(请确保正确使用CSRF)

问题代码 工作代码
不满意允许更多路由接受JSON的安全性,但我们稍后会进一步锁定它。

控制器是否应该只使用JSON响应?如果是这样,请尝试
render:json=>@data
而不是
respond\u with
。这实际上是我犯了一个相当愚蠢的错误造成的。看看我的答案。最近JavaScript代码太多。这就是为什么在询问时最好不要隐藏代码。但很好你找到了答案;)
@array.map { |a| return a['id'] }
responds_to :json => [:create, :our_custom_method1, :our_custom_method2]
responds_to :json