gpt4 book ai didi

ruby-on-rails - 了解 Ruby/Rails 中的 block

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:36 26 4
gpt4 key购买 nike

我使用脚手架为帖子创建了一个 CRUD 系统。在 Controller 中,我看到了这个:

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 上,它将执行 htmljson 方法。

  • { render json: @posts } 如何与 json 方法相关联? render json: @posts 是否作为参数传递给方法? renderjson 都是一个对象吗?我从未见过在符号之外使用冒号符号。

最佳答案

  1. PostsController 继承自ApplicationController 的方法,ApplicationController 继承自ActionController::Base。这就是 responds_to 的来源。值得研究的主题是“方法查找”。
  2. do ... end 是编写 block 的一种方式。{ render json: @posts } 是另一种方式。
  3. json: "foo" 是编写 :json => "foo"
  4. 的更现代的替代方法
  5. format 是您准备在 block 内使用的任意变量。 render 是一个方法,:json 是一个符号。 respond_to 将响应 Rails 相应格式化响应的用户请求。
  6. 为了理解这个方法,还有这个:

http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

如果您想查看 source (有点厚),例如 Paul 提到的 respond_with 方法,它在 Rails 源代码中:

rails/actionpack/lib/action_controller/metal/mime_responds.rb

关于ruby-on-rails - 了解 Ruby/Rails 中的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com