为什么Rails“new”操作具有XML格式指令?

时间:2010-03-16 21:24:31

标签: ruby-on-rails

我是Rails的新手,并且一直在关注rails webpage的教程。 使用scaffold指令创建“post”模型,我发现控制器中的new动作有一个XML格式的特殊指令:

def new
  @post = Post.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @post }
  end
end

在创建新帖子时,我看不到支持XML请求的原因。浏览到/posts/new.xml什么都不返回。这是什么目的?

1 个答案:

答案 0 :(得分:3)

new操作背后的原因只是为xml客户端提供默认数据(如果需要,可以提供其他内容)。

所有路由都使用format指令,除非您愿意,否则无需支持格式。

上面的代码可能看起来像:

respond_to do |format|
  format.html # renders new.html.erb
  format.xml  { render :xml => {:message => "XML is not supported"} }
  format.json { render :text => @post.to_json }
  format.js # renders new.js.erb
end

此外,这不仅限于new操作,也适用于您的所有操作。要使用的格式取自url(如果路由设置为使用它),或者来自浏览器发送的HTTP-Accept标头。