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