您已经开始使用 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` 是什么。