我使用脚手架为帖子创建了一个CRUD系统。在控制器中,我看到了:
class PostsController < ApplicationController
# GET /posts
# GET /posts.json
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @posts }
end
end
什么是respond_to
,它来自哪里?由于它使用do
运算符,因此它是某种可迭代列表,我假设。在该列表中的每个format
上,它将执行html
和json
方法。
{ render json: @posts }
如何与json
方法相关联? render json: @posts
是作为参数传递给方法的吗? render
和json
每个都是一个对象吗?我从未见过在符号之外使用的冒号表示法。
答案 0 :(得分:3)
responds_to
来自的地方。值得研究的主题是“方法查找”。do ... end
是编写块的一种方法。
{ render json: @posts }
是另一种方式。json: "foo"
是写:json => "foo"
format
是您正在烹饪以在块内使用的任意变量。 render
是一种方法,:json
是一种符号。 respond_to
将响应Rails格式化响应的用户请求。http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to
如果你想查看source(它有点厚),例如在Paul提到的respond_with
方法中,那就在Rails源代码中:
<强>导轨/ ActionPack的/ LIB / action_controller /金属/ mime_responds.rb 强>
答案 1 :(得分:1)