什么是“respond_to”和“do”以及“| format |”在这个Rails代码?

时间:2010-08-22 23:32:19

标签: ruby-on-rails ruby

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”是吗? 铁路的一部分?
  • 什么是“做”和“|格式|”?为什么格式周围有垂直分隔符?
  • Rails如何知道Post模型?我没有导入该模型。 (在Python / Django中,您必须先导入模型才能使用它)

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

3 个答案:

答案 0 :(得分:13)

respond_to是一种特定于rails的方法,用于定义如何响应不同格式(如xml和html)的请求。 do|format|描述了一个ruby块,其中do的作用类似于左大括号,end作为右大括号,|format|定义了块变量从yield中的responds_to语句中获取其值。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)