2011-01-14 2 views
4

Я пытаюсь создать API и мне нужно вернуть xml независимо от формата запроса. теперь у меня есть следующие в моем контроллереrails 3 render xml независимо от request.format

def index 
    @posts = Post.all 
    respond_to do |format| 
     format.xml 
    end 
end 

У меня есть index.xml.builder

«/posts.xml» работает для меня, но не «/» сообщений

я попытался запрос .format =: xml, который дал мне SystemStackError (уровень стека слишком глубокий) :. почему это происходит.

Как заставить контроллер отображать xml для всех типов запросов? так что мне не нужно указывать формат в URL-адресе, который выглядит чистым и аккуратным?

ответ

2
def index 
    @posts = Post.all 
    respond_to do |format| 
    format.any do 
     render :xml => @posts.to_xml 
    end 
    end 
end 
+1

нормально .. но что, если я хочу сделать пользовательские XML частичное скажем index.xml.builder? –

+0

\t индекс @posts = Post.all reply_to do | формат | format.any do render: action => 'index.xml.builder',: layout => false end end end – itschn

0

Я сделал, как это, так как я имел настраиваемое представление XML для визуализации:

def index 
    respond_to do |format| 
    format.any do 
     headers["Content-Type"] = "application/xml; charset=utf-8" 
     render "index.xml" 
    end 
    end 
end 
Смежные вопросы