Ruby-on-Rails: Помощь с рендером: layout => false - PullRequest
5 голосов
/ 02 декабря 2010

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

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

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

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

render :layout => false

, мой API сообщит об ошибке "отсутствует шаблон".Я также попробовал следующее:

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

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

Ответы [ 2 ]

9 голосов
/ 02 декабря 2010

Когда вы визуализируете: xml, он не использует макет, потому что он также не использует шаблон. Указав: layout => false, вы указываете rails искать шаблон, который не существует.

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

render :json => @my_resource

или

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

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

4 голосов
/ 02 декабря 2010
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-respond_to-work-in-the-rails-controllers/

...