关于ruby:什么是” respond_to”,” do”和” | format |”在此Rails代码中?

What is “respond_to” and “do” and “|format|” in this Rails code?

1
2
3
4
5
6
7
8
9
10
11
12
class PostsController < ApplicationController
  # GET /posts
  # GET /posts.xml
  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
    end
  end
...

  • " respond_to"到底是什么?
    铁轨的一部分?
  • 什么是" do "和" | format | "?为什么在格式周围有垂直分隔符?
  • Rails如何知道Post模型?我没有导入该模型。 (在Python / Django中,必须先导入模型,然后才能使用它)

这来自Ruby on Rails教程:http://edgeguides.rubyonrails.org/getting_started.html#setting-the-application-home-page


respond_to是Rails特定的方法,它定义了如何响应不同格式(例如xml和html)的请求。 do|format|描绘了一个ruby块,其中do的作用像是一个大括号,而end的作用是一个封闭的括号,而|format|定义了从yield语句中获取其值的块变量responds_to


" do"是RUBY块,而" | format |"可以是任何东西,它只是要在该块中使用的变量,这是另一个示例:

1
2
3
4
respond_to do |x|
  x.html # index.html.erb
  x.xml  { render :xml => @posts }
end


  • respond_to是Rails方法。
  • do和块的参数(format)是标准Ruby。
  • Rails自动加载各种库,并在各个位置公开它们。另一个示例是视图帮助程序,它们在模板中自动可用,但在控制器中不可用。 (但是可以,默认情况下不是。)