0

这是诀窍。我有一个名为 Pages 的模型,其中有一个名为“page_type”的字段,可以说是 3 个变体之一:“html”、“image”、“vcard”和一个名为“content”的字段。所以现在我需要应用程序根据请求的页面类型来响应不同的 mimetypes。

如果 page_type 设置为“html” - 使用适当的视图和 html_safe 将内容呈现为 html,这很容易。

如果 page_type 设置为“image” - 使用路径获取图像,存储在内容中并将其发送回用户,就像他请求图像一样。

“电子名片”也一样。

我怎样才能做到这一点?

4

1 回答 1

1

如果您正在生成 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' 方法。

于 2012-05-20T16:51:38.830 回答