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.)
精彩评论