What is "respond_to" and "do" and "|format|" in this Rails code?
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_tois a Rails method.doand 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.)
加载中,请稍侯......
精彩评论