Что такое "response_to" и "do" и "| format |" в этом коде Rails?
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
...
- Что именно такое "response_to"?
часть рельсов?
- Что такое "делать" и "| формат |"? Почему существуют вертикальные разделители вокруг формата?
- Как же Rails узнает о модели Post? Я не импортировал эту модель. (В Python/Django вы должны импортировать модель, прежде чем сможете ее использовать)
Это из учебника по Ruby on Rails: http://edgeguides.rubyonrails.org/getting_started.html#setting-the-application-home-page
Ответы
Ответ 1
respond_to
- это метод, специфичный для рельсов, который определяет, как реагировать на запросы для различных форматов (таких как xml и html). do
и |format|
очерчивают блок ruby, при этом do
действует как открытая скобка, а end
как закрывающая скобка, а |format|
определяет переменную блока, которая получает свое значение из оператора yield
внутри responds_to
.
Ответ 2
"do" - это блок RUBY, а "| format |" может быть чем угодно, это просто переменная для использования внутри этого блока, вот еще один пример:
respond_to do |x|
x.html # index.html.erb
x.xml { render :xml => @posts }
end
Ответ 3