Вопрос

Я пытаюсь получить доступ к ресурсу приложения Rails из API (оно отправляет запрос на получение приложения/XML), и я хотел бы не анализировать файл XML.

В контроллере моих ресурсов у меня есть следующее:

def get_resource
    @my_resource = Resources.new
    render :xml => @my_resource
end

который создает XML -файл, как и ожидалось. Если я заменю его:

render :layout => false

Мой API сообщает об ошибке «Шаблон отсутствует». Я также попробовал следующее:

render :xml => @identity, :layout => false

Но страница в любом случае отображается. Как правильно это сделать?

Это было полезно?

Решение

Когда вы видите: XML, он не использует макет, потому что он также не использует ни одного шаблона. Указав: Layout => FALSE, вы говорите Rails искать шаблон, которого не существует.

Теперь, если вы не хотите анализировать файл XML, у вас есть несколько альтернатив. Либо:

render :json => @my_resource

или

render :text => "My resource name is: #{@my_resource.name}" # Whatever you want

Все зависит от того, как вы хотите, чтобы результат выглядел, что ваш API ожидает получить. Так что, если вы не найдете ничего из этого полезного, приведите пример того, как вы хотите, чтобы ответ выглядел.

Другие советы

def get_resource
  @my_resource = Resources.new
  respond_to do |wants|
    wants.xml { render :xml => @my_resource }
    wants.html { render :layout => false }
  end
end

Прочитайте эту статью: http://tokumine.wordpress.com/2009/09/13/how-does-resport_to-work-in-the-rails-controllers/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top