0

我正在研究呈现更复杂的响应。

具体来说,我正在搜索用于格式化具有多个级别的 yaml 和 json 响应的选项,但现在我无法找到有关选项的任何 api 信息。

我在其他示例控制器中看到了一些关于 :include 和 :only 的内容。我想知道更复杂的文档渲染的全部选项是什么(特别是 yaml,但我想为所有人学习)

例如:

 def index
    @people = Person.find(:all)

    respond_to do |format|
      format.*  ?????????????????????
    end
  end

背景:尝试组装对我来说更复杂的 yaml 输出,并从控制器中查看我可以做什么和如何做,而不是必须构建一个特定的视图。

4

2 回答 2

4

支持一组标准的 MIME 类型::html、:xhtml、:text、:txt、:js、:css、:ics、:csv、:xml、:rss、:at​​om、: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

我希望这有帮助。

于 2011-06-02T13:38:30.343 回答
3

阅读完 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声明性版本接受的唯一选项。

于 2011-06-02T15:01:09.493 回答