我有一个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
标签消失了。
答案 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'