0
respond_to do |format|
  format.html { render :html => @something }
  format.json { render :json => @something }
  format.xml { render :xml => @something }
end

这里我们有三种不同的格式:html、json、xml。那么实际上返回的是哪一个呢?我们是否有以 .html、.xml、.json 结尾的三个不同文件?或者换句话说,respond_to 是否渲染所有三个 html、json、xml 文件?

4

2 回答 2

1

respond_to 是附加到 Controller 类(或者更确切地说,它的超类)的 Rails 辅助方法。它引用将发送到视图(将发送到浏览器)的响应。

您的示例中的块正在格式化数据 - 通过在块中传递“格式”参数 - 每当浏览器请求 html 或 json 数据时从控制器发送到视图。在rails中你也可以这样写

class PostsController < ApplicationController
  respond_to :html, :xml, :js

  def index
    @posts = Post.all

    respond_with(@posts)
  end
end
于 2013-04-10T06:48:01.523 回答
0

respond_to可以根据当前请求渲染这三个中的每一个。正确的响应不是返回的内容,respond_to而是实际呈现的内容。你可以在这里找到完整的解释

于 2013-04-10T05:24:47.057 回答