rails 3渲染xml,与request.format无关

时间:2011-01-14 07:28:01

标签: xml ruby-on-rails-3 render

我正在尝试创建一个API,我需要返回xml而不管请求格式如何。 现在我的控制器中有以下内容

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

我有一个index.xml.builder

'/ posts.xml'适用于我,但不适用于'/ posts'

我试过request.format =:xml给了我一个SystemStackError(堆栈级别太深):为什么会这样。

如何强制控制器为所有类型的请求呈现xml?所以我不需要在url中指定看起来干净整洁的格式?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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