我正在研究呈现更复杂的响应。
具体来说,我正在搜索用于格式化具有多个级别的yaml和json响应的选项,但现在我找不到任何关于选项的api信息。
我在其他示例控制器中看到了一些关于:include和:的内容。我想知道对于更复杂的文档呈现(特别是yaml,但我想全面了解)有哪些选项
例如:
def index
@people = Person.find(:all)
respond_to do |format|
format.* ?????????????????????
end
end
背景:试图组装对我来说更复杂的yaml输出,并从控制器中查看我可以做什么以及如何做,而不是必须构建一个特定的视图。
支持一组标准的MIME类型::html、:xhtml、:text、:txt、:js、:css、:ics、:csv、:xml、:rss、:atom、:yaml、:url_encoded_form、:multipart_form、:json。
要创建新的,请在mime_types.rb初始值设定项中注册它们
# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf
# Mime::Type.register_alias "text/html", :iphone
我希望这能有所帮助。
在阅读了rails代码之后,我可以放心地说,没有什么是你不知道的。(尽管API文档中似乎缺少块形式的respond_to
文档)
基本上有两种方法可以使用respond_to
声明性的
class WidgetsController
respond_to :html, :xml, :json, only: [:index, :show]
def index
@widgets = Widget.all
respond_with @widgets
end
…
end
块
class WidgetsController
def index
@widgets = Widget.all
respond_to do |format|
format.html #do default
format.pdf {…} # handle in block
format.any(:json, :xml) {…} # handle anything listed
end
end
…
end
不能在块形式上使用选项(这是一个完全不同的方法定义),:only
和:except
是声明性版本唯一接受的选项。