【发布时间】:2012-03-18 12:57:34
【问题描述】:
我正在阅读Getting Started with Rails 指南,但对第 6.7 节感到困惑。生成脚手架后,我在控制器中找到以下自动生成的块:
def index
@posts = Post.all
respond_to do |format|
format.html # index.html.erb
format.json { render :json => @posts }
end
end
我想了解 respond_to 块的实际工作原理。什么类型的变量是格式?是格式对象的 .html 和 .json 方法吗?
的documentationActionController::MimeResponds::ClassMethods::respond_to
不回答问题。
【问题讨论】:
-
如果我可以链接到 ActionController::MimeResponds::ClassMethods::respond_to 的文档就好了,但是 api.rubyonrails.org 似乎不喜欢直接超链接...
-
respond_to 结束调用(例如 blah.html、blah.json 等)并匹配指定的视图。其他响应可以是 XML、CSV 等等,具体取决于应用程序。
-
它如何“匹配指定的视图?”
-
我不认为扩展名(xml、html 等)映射到视图。如果您选择默认呈现(
format.html-- 无参数),它将使用约定(基于 URL 和 HTTP 动词)来选择视图(预期为 HTML)。此处指示响应者(格式)通过序列化为 json 来呈现以 .json 结尾的 URL,而不是使用视图和约定。
标签: ruby-on-rails