0

请解释为什么我们需要在控制器中使用此代码?这段代码有什么意义?

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @users }
end
4

3 回答 3

2

它允许您根据用户/调用者请求的格式设置不同的输出格式。如果您要访问http://yourhost/controller/index.html,控制器将使用 ERB 模板index.html.erb(或 HAML 或其他)进行响应。如果您要访问http://yourhost/controller/index.json,它将以 JSON 模板响应index.json.erb

这允许您拥有一个可以准备数据的控制器操作,然后根据请求的格式选择要呈现的视图。

于 2012-12-05T15:17:34.693 回答
2

定义调用 respond_with 时默认呈现的 mime 类型。所以基本上,这意味着您的控制器操作可以以不同的格式(在您的情况下为 html、json)被击中,并且仍然将数据提供回调用它的任何内容。这有助于 API 开发和许多其他事情。例如:您想要获取所有用户的 json 列表以使用 javascript 执行某些操作。您将调用 /users.json ,这将转到您的 user_controller#index 操作并知道呈现所有用户的 json 对象。

于 2012-12-05T15:18:57.787 回答
1

上面的代码是脚手架生成的,它为你的控制器提供了一种渲染*.html*.json视图的方法,使得访问数据以实现 API 或 Web 应用程序的普通视图变得容易。

您还可以创建 XML 输出:

format.xml  { render xml: @users }

以及其他格式,如 PDF 或 DOC,具体取决于您使用的 gem。

有关详细信息,请参阅Rails 指南动作控制器概述

于 2012-12-05T15:24:01.807 回答