Ruby-on-rails: помощь с рендерингом: макет => ложный
-
30-09-2019 - |
Вопрос
Я пытаюсь получить доступ к ресурсу приложения 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/