请解释为什么我们需要在控制器中使用此代码?这段代码有什么意义?
respond_to do |format|
format.html # index.html.erb
format.json { render json: @users }
end
答案 0 :(得分:2)
它允许您根据用户/调用者请求的格式来不同地格式化输出。如果您要访问http://yourhost/controller/index.html
,控制器将使用ERB模板index.html.erb
(或HAML或其他)进行响应。如果您要访问http://yourhost/controller/index.json
,则会使用JSON模板index.json.erb
进行回复。
这允许您拥有一个可以准备数据的控制器操作,然后根据请求的格式选择要渲染的视图。
答案 1 :(得分:2)
定义在调用respond_with时默认呈现的mime类型。 所以基本上,这意味着您的控制器操作可以以不同的格式命中(在您的情况下为html,json),并且仍然将数据提供回调用它的任何内容。这有助于API开发和许多其他事情。 例如:您希望获得所有用户的json列表以使用javascript执行某些操作。你可以调用/users.json,这将转到你的user_controller #index动作,并知道为你的所有用户呈现一个json对象。
答案 2 :(得分:1)
上面的代码是生成的脚手架,它提供了一种为您的控制器呈现*.html
和*.json
视图的方法,使您可以轻松访问用于实现API的数据或用于Web的普通视图应用
您还可以创建XML输出:
format.xml { render xml: @users }
以及其他格式,如PDF或DOC,具体取决于您使用的宝石。
有关详细信息,请参阅Rails Guide Action Controller Overview。