如果您正在生成 URL 以访问您的应用程序中的资源(页面),您可以指定资源位置 RESTful,例如 /pages/2.jpg、/pages/3.vcard、/pages/4(默认为 html ) 使用内置的 Rails 视图助手,例如 page_url(@page, :format => 'jpg')。然后只需在 Rails 中使用 repond_to 来传递资源:
respond_to do |format|
format.html { # default rendering in show.erb.html }
format.jpg { # perhaps send_file or send_data call }
format.vcard { # send attachment }
end
查看Rails 路由指南了解更多信息。您需要配置 Rails 来处理对 .vcard 的请求。请参阅此要点。
如果您不控制链接生成(对您的资源的外部引用)并期望获得像 /pages/2 (这是一个 jpeg)这样的请求,那么您将不得不回退到使用您的 page_type 列有条件地使用 send_file 呈现、send_data 或其他 Rails 渲染方法。您可能会考虑重新使用您在上面的 respond_to 中为每个块创建的逻辑(方法),以便您的控制器具有 'respond_to_html'、'respond_to_jpg'、'respond_to_vcard' 方法。