Ruby on rails XML未呈现rails中1个操作的值
我正在rails中开发一个API,它将响应xml和json。除了1个动作外,所有动作的xml和json都会按预期响应。在total_words操作中,它使用json而不是xml正确响应 pages\u controller.rbRuby on rails XML未呈现rails中1个操作的值,ruby-on-rails,xml,curl,Ruby On Rails,Xml,Curl,我正在rails中开发一个API,它将响应xml和json。除了1个动作外,所有动作的xml和json都会按预期响应。在total_words操作中,它使用json而不是xml正确响应 pages\u controller.rb class Api::PagesController < ApplicationController respond_to :json, :xml def index @pages = Page.all respond_with @pag
class Api::PagesController < ApplicationController
respond_to :json, :xml
def index
@pages = Page.all
respond_with @pages
end
def show
@page = Page.find(params[:id])
respond_with @page
end
def total_words
@page = Page.find(params[:id])
respond_with @page.words
end
end
如果我使用以下方式通过curl访问:
curl --url http://0.0.0.0:3000/api/pages/3/total_words.xml
curl --url http://0.0.0.0:3000/api/pages/3/total_words.json
我什么也得不到
如果我使用以下方式通过curl访问:
curl --url http://0.0.0.0:3000/api/pages/3/total_words.xml
curl --url http://0.0.0.0:3000/api/pages/3/total_words.json
我得到:3
如果我使用以下方式通过浏览器访问:
http://0.0.0.0:3000/api/pages/3/total_words.xml
我得到:
Template is missing
Missing template api/pages/total_words, application/total_words with {:locale=>[:en], :formats=>[:xml], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/api_test/API/app/views"
如果我在浏览器中也这样做,但使用json,我会得到:3,就像我在curl中做的一样
我不知道为什么json和xml会有不同的响应。问题似乎是我试图返回一个整数或字符串,它可以处理json而不是xml。我将返回修改为散列,json使用json和xml成功地返回了正确的值。看起来xml可以使用数组或散列 我现在修改的方法是:
def words
{ id: self.id, word_count: self.content.split.size }
end