我正在研究呈现更复杂的回应。
具体来说,我正在搜索用于格式化多个级别的yaml和json响应的选项,但是现在我无法找到有关选项的任何api信息。
我见过一些关于:include和:仅在其他样本控制器中。我想知道更复杂的文档呈现的全方位选择(特别是yaml,但我想为所有人学习)
例如:
def index
@people = Person.find(:all)
respond_to do |format|
format.* ?????????????????????
end
end
背景:尝试组合对我来说更复杂的yaml输出,从控制器中查看我可以做什么以及如何,而不是必须构建特定的视图。
答案 0 :(得分:4)
支持一组标准的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
我希望这会有所帮助。
答案 1 :(得分:3)
阅读完rails代码后,我可以肯定地说,没有其他任何你不知道的东西。 (虽然API文档中似乎缺少documentation for respond_to
in block form)
基本上有两种方法可以使用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
是声明版本接受的唯一选项。