2006 年 12 月 19 日,星期二

使用自定义 MIME 类型

发布者:rick

您已经开始使用 Rails 的新 MIME 类型支持 `responds_to`,但您可能想知道如何添加自己的自定义类型?幸运的是,Geoffrey Grosenbach(又名 topfunky)将为您指明方向。他的示例涉及为 .png 注册一个扩展名,并使用一些 RMagick 功能为他的购物车中的订单生成自定义图标。他的示例看起来像这样:

Mime::Type.register "image/png", :png

# then in your controller action
def show
  respond_to do |format|
    format.html { }
    format.png { }
  end
end

Mime::Type.register 将 image/png MIME 类型添加到 MIME 类型集合中,并将其绑定到 .png 扩展名。它还在 Mime::PNG 处创建了一个特殊的 Mime::Type 实例。查看这篇精彩的文章及其评论,以获取更多关于缓存和 RMagick 的技巧。

注意:经过一些调查,我发现如果使用 `:format` 参数发起请求,则在 Rails 1.2 上不需要使用 Geoff 的:format hack。使用 `formatted_post_path(@post, :xml)` 这样的路由将为您提供类似 “/posts/1.xml” 的路径。访问该路径将写入 `public/posts/1.xml`,而不管 `page_cache_extension` 是什么。