Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在rails中两次解码HTML_Html_Ruby On Rails_Ruby_Decode - Fatal编程技术网

在rails中两次解码HTML

在rails中两次解码HTML,html,ruby-on-rails,ruby,decode,Html,Ruby On Rails,Ruby,Decode,我从一个XML文件中提取数据,该文件显示为双重编码的HTML,我可以使用raw、h或String.HTML\u safe将其解码为直接的HTML。将这些方法中的任何一个加倍似乎都无法进一步解码,因此当我在视图中打印字符串时,它将呈现为编码的HTML 例如,我可能会得到以下字符串: @paragraph = <p>This is a Paragraph.</p> 当我打印时,我得到p这是一个段落。/p显示在我

我从一个XML文件中提取数据,该文件显示为双重编码的HTML,我可以使用
raw
h
String.HTML\u safe
将其解码为直接的HTML。将这些方法中的任何一个加倍似乎都无法进一步解码,因此当我在视图中打印字符串时,它将呈现为编码的HTML

例如,我可能会得到以下字符串:

@paragraph = <p>This is a Paragraph.</p>
当我打印
时,我得到
p这是一个段落。/p
显示在我的浏览器中。打印
呈现
这是一段。

正如所料。但现在当我再次尝试解码时:
我得到了
这是一段。

。无论我调用多少次
raw
或其他两个方法中的任何一个,我都会继续得到编码的HTML

我想要的当然是:

这是一段。
使用CGI.escapeHTML/CGI.unescapeHTML

 irb(main):043:0> CGI.escapeHTML "<p>This is a Paragraph.</p>"
 => "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"

 irb(main):090:0> CGI.unescapeHTML "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"
 => "<p>This is a Paragraph.</p>"
irb(main):043:0>CGI.escapeHTML“这是一段。

” =>“p这是一个段落。/p” irb(main):090:0>CGI.unescapethtml“p这是一个段落。/p” =>“这是一段。


您可能还需要了解如何使用CGI.escapeHTML/CGI.unescapeHTML删除html标记

 irb(main):043:0> CGI.escapeHTML "<p>This is a Paragraph.</p>"
 => "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"

 irb(main):090:0> CGI.unescapeHTML "&lt;p&gt;This is a Paragraph.&lt;/p&gt;"
 => "<p>This is a Paragraph.</p>"
irb(main):043:0>CGI.escapeHTML“这是一段。

” =>“p这是一个段落。/p” irb(main):090:0>CGI.unescapethtml“p这是一个段落。/p” =>“这是一段。


您可能还想看看如何删除html标记

Ha,我假设它应该是
CGI.unescapethtml
。不过,这就成功了,谢谢!“这是一个段落。

”未替换。调用CGI.unescapeHTML不会做任何事情,我假设这应该是
CGI.unescapeHTML
。不过,这就成功了,谢谢!“这是一个段落。

”未替换。调用CGI.unescapeHTML不会起任何作用