如何在RoR中向用户显示现有的xml文件

时间:2009-12-04 09:31:21

标签: ruby-on-rails xml firefox view render

我有一个xml文件,我想向用户显示(渲染),因为它,即我想保留标签。我该怎么做RoR?

我尝试了render :file=>"/path/to/file.xml",但标记<product>消失了。

//file.xml
<product>car</product>

更新:我发现该行为是依赖于浏览器的

  • Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.0.3)Gecko / 2008101315 Ubuntu / 8.10(强悍)Firefox / 3.0.3

    保留标签。

  • Mozilla / 5.0(Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.15)Gecko / 2009101601 Firefox / 3.0.15

    标签消失了。

4 个答案:

答案 0 :(得分:6)

你试过添加

吗?
:content_type => 'application/xml'

到你的渲染线?

render :file=>"/path/to/file.xml", :content_type => 'application/xml'

答案 1 :(得分:3)

不同的浏览器以不同方式显示XML。有些人试图智能,有些则不这样做。你不能依赖它。如果要“按原样”显示XML,则需要将转义的XML呈现为文本。

在您的控制器操作中,您必须将其称为:

render :text => @template.h(File.read("/path/to/file.xml"))

这将为您转义所有HTML并充当纯文本。

答案 2 :(得分:0)

在文件中添加xml prolog行(除了来自jhwist的内容类型建议)。

<?xml version="1.0"?>

答案 3 :(得分:0)

或更好

render :text => File.read("/path/to/file.xml"), :content_type => 'application/xml'