Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 XML未呈现rails中1个操作的值_Ruby On Rails_Xml_Curl - Fatal编程技术网

Ruby on rails XML未呈现rails中1个操作的值

Ruby 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

我正在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 @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