开发者

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

开发者 https://www.devze.com 2023-01-12 10:37 出处:网络
class PostsController < ApplicationController # GET /posts # GET /posts.xml def index @posts = Post.all
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
...
  • What exactly is "respond_to" Is it part of rails?
  • What is "do" and"|format|"? Why are there vertica开发者_开发知识库l separators around format?
  • How come Rails knows about the Post model? I didn't import that model. (In Python/Django, you have to import a model before you can use it)

This is from the Ruby on Rails tutorial: http://edgeguides.rubyonrails.org/getting_started.html#setting-the-application-home-page


respond_to is a rails specific method that defines how requests for different formats (like xml and html) are responded to. The do and |format| delineate a ruby block, with do acting like a open brace and end as a closing brace, and |format| defines the block variable that gets its value from the yield statement within responds_to.


the "do" is a RUBY block, and the "|format|" could be anything, its just a variable to use inside that block, here is another example:

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


  • respond_to is a Rails method.
  • do and the block's parameter (format) is standard Ruby.
  • Rails automatically loads various libraries and exposes them in various locations. Another example are view helpers that are automatically available in templates, but not in controllers. (But they can be, they just aren't by default.)
0

精彩评论

暂无评论...
验证码 换一张
取 消