【问题标题】:Rails 3 render plaintext page using viewRails 3 使用视图渲染纯文本页面
【发布时间】:2012-09-25 21:47:44
【问题描述】:

我在 Rails 的数据库中存储了一个 Linux 配置文件,我希望能够通过 Web 请求下载配置

我在 Linux 方面的目标是 curl/wget 网页,将其与当前配置进行比较,然后连接服务器。在脚本中很容易做到。

在 Rails 的正常情况下,你可以这样做

render :text => @config_file

但是,我需要先对数据进行一些格式化以应用静态标题等。这不是单行的,所以我需要能够呈现视图。

我的控制器中有以下设置,但我仍然在文档中获得最少的 HTML 标记集

render(:content_type => 'text/plain', :layout => false);

我之前在 .Net 中做过类似的事情,所以它打印出一个带有 \n 解释的文本文件。我如何在 Rails 中获得它?

【问题讨论】:

  • 看来应该可以了。您确定流浪标签不是使用在您的视图中生成 HTML 的帮助程序的结果吗?

标签: ruby-on-rails plaintext


【解决方案1】:

通常,这是通过

# config/initializers/mime_types.rb
# ...
# Mime::Type.register "text/plain", :plaintext
# No changes needed as rails comes preconfigured with the text/plain mime type


# app/controllers/my_controller.rb

class MyController < ApplicationController
  def my_action
    respond_to do |format|
      format.text
    end
  end
end

还有一个视图文件

# app/views/my_controller/my_action.text.erb
...

关于您在 DOM 中找到的最小 HTML:您是否从某种浏览器内检查器中看到了这一点,例如 google chrome 或 safari 中包含的那些?如果是这样,请不要担心,这是由浏览器添加的,以便内联显示您的文本/纯文档。如果您查看交付文档的来源 (ctrl-u),则不应显示任何 HTML。

【讨论】:

  • 谢谢。 Ctrl-U 表明我已经是正确的。 Firebug 正在插入 HTML 标记。 Mime Type 注册是一个很好的花絮,因为 Rails 没有用于 respond_to 的内置明文选项似乎很愚蠢。
  • 如果你只是使用text,你真的需要添加mime类型plaintext吗? Rails 不会理解那个 mime 类型,并将其设置为 text/plain 吗?
  • 显然 .text 开箱即用,无需注册新的 mimetype。从您的 Rails 控制台中查看Mime::EXTENSION_LOOKUP["text"]。所以你是对的。
  • @moritz 你会在你的答案中添加最后一条评论吗?
猜你喜欢
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多