有人可以向我解释response_to的作用吗? (导轨)

时间:2010-08-28 18:33:42

标签: ruby-on-rails

因此,当一个人生成脚手架时,控制器会自动创建这些块(?),就像这样

respond_to do |format|
      format.html
      format.xml  { render :xml => @c }
    end

这实际上做了什么以及它如何变为format.htmlformat.xml?每个人做什么?

2 个答案:

答案 0 :(得分:8)

它定义当前操作将响应各种格式(操作的内容可以以多种方式呈现,而不仅仅是普通的旧HTML)。

  • 如果您打开浏览器并输入/my/path/to/action.html,它将呈现HTML(来自模板);
  • 如果您输入/my/path/to/action.xml,它将使用{ render :xml => @c }呈现XML。 Rails将通过调用to_xml变量;
  • 上的@c方法生成XML
  • 但是,如果您指向/my/path/to/action.json,则会引发404错误。

答案 1 :(得分:0)

Rails使用MIME type标头或格式(Accept; /controller/action/5.xml; /controller/action/5.html;等等...)确定的请求的/controller/action/5.json来确定映射到请求的URL的控制器操作的响应格式。

这样,rails可以自动为同一控制器操作的许多类型的请求呈现不同的内容格式。