Установить тип ответа контроллера rails на xml

Я довольно новичок в рельсах. я пытаюсь установить тип ответа контроллера рельсы на XML, но не очень удачи. Конечно, я мог бы позволить себе лучше понять, как работают response_to и response_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 того, как response_to и response_with работает, был бы удивительным!

Спасибо всем.

1 ответ

Решение

Замещать

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

с

respond_with(ix)

Есть 2 способа рендеринга XML. В примере 1 используется response_to, что означает, что "каждый метод будет использовать xml и использовать анализ объекта из response_with"

В примере 2 используется response_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/

Другие вопросы по тегам