我正在尝试使用node.js框架batman.js通过batman-rails gem运行一个rails应用程序。
当我在我的rails控制器中使用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相关的问题,我还没有真正将它们应用到我的情况中。有没有什么我做错了让rails response_with JSON?
答案 0 :(得分:24)
好吧,我制作了一个非常简单的应用来查看你的情况:
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.json
和samples/1.json
时,它按预期工作。但是,当我转到/samples
和/samples/1
(没有.json扩展名)时,我收到了406错误。
为了让URL在没有.json扩展名的情况下工作,您需要修改config/routes.rb
文件,如下所示:
resources :samples, defaults: {format: :json}
否则,Rails应用程序将尝试使用HTML响应来响应请求。