将rails控制器的响应类型设置为xml

时间:2012-09-28 01:58:03

标签: ruby-on-rails respond-to respond-with

我对rails非常陌生。我正在尝试将rails控制器的响应类型设置为xml,但没有太多运气。我当然能够更好地理解response_to和respond_with的工作方式。

这是我的控制器的样子:

class ResponsesController < ApplicationController

 respond_to :xml

  def index

    require 'rubygems'   
    require 'telapi'

        ix = Telapi::InboundXml.new do

          Say('Hello.', :loop => 3, :voice => 'man')
          Say('Hello, my name is Jane.', :voice => 'woman')
          Say('Now I will not stop talking.', :loop => 0)
        end

        respond_with do |format|
            format.xml { render }
        end

        puts ix.response 

    end
end

这会导致http检索失败。有人可以告诉我如何修复控制器并将其响应类型设置为xml?另外,如果有回应和响应工作的话,那将是一个很有说服力的1-2衬里!

谢谢大家。

1 个答案:

答案 0 :(得分:2)

替换

  respond_with do |format|
            format.xml { render }
        end

respond_with(ix)

有两种渲染xml的方法。示例1使用respond_to,这意味着“每个方法都将使用xml并使用来自respond_with的对象解析”

示例2使用respond_to表示“使用下面的块来声明响应的类型和要解析的对象”

示例1:

class ResponsesController
  respond_to :xml #respond_to A

  def index
    respond_with(@asd) # respond_with A
  end
end

示例2:

def ResponsesController

  def index
    respond_to do |format|
     format.xml { render xml: @asd}
    end
  end
end

http://blog.plataformatec.com.br/2009/08/embracing-rest-with-mind-body-and-soul/