使用rails变量中的实体存储字符串

时间:2010-12-17 05:25:31

标签: ruby-on-rails ruby

嘿伙计们 当我存储这个字符串时:

http://61.147.96.19/f4v/41/53283141.h264_2.f4v?10000&key=d7d7488b5dd4a35aac3e784cf4acb1a174ddc7&playtype=1&tk=2038443745&brt=3&id=tudou&itemid=30165756&fi=53283141&sz=19354294

在变量@longurl

并在erb文件中使用它

<%= @longurl %>

当我在浏览器中检查源文件时,它不起作用:

http://61.147.96.19/f4v/41/53283141.h264_2.f4v?10000&amp;key=d7d7488b5dd4a35aac3e784cf4acb1a174ddc7&amp;amp;playtype=1&amp;amp;tk=2038443745&amp;amp;brt=3&amp;amp;id=tudou&amp;amp;itemid=30165756&amp;amp;fi=53283141&amp;amp;sz=19354294

并比较差异,在每个&amp; amp之后添加amp;,我不知道如何避免这种情况。

BT顺便看来@url默认情况下由rails使用,我无法在变量中保存任何内容,有人可以告诉我为什么吗?

由于

4 个答案:

答案 0 :(得分:1)

您可以使用CGI::unescape解码URL编码的字符串。

<%= CGI::unescape(@longurl) %>

对于HTML实体,请使用CGI::unescapeHTML

<%= CGI::unescapeHTML(@longurl) %>

答案 1 :(得分:1)

假设您使用的是Rails 3,请尝试<%= @longurl.html_safe %>

答案 2 :(得分:1)

你真的想要&amp; 在此处阅读原因:http://htmlhelp.com/tools/validator/problems.html

它是以任何其他方式“破坏”该方法,还是仅仅因为它看起来不同?

如果Rails使用@url,请使用其他变量。它不应该是一个交易破坏者。

答案 3 :(得分:1)

在Rails 3之前,您曾经必须像这样编写代码以确保所有内容都是HTML编码的:

<%= h @longurl %>

h方法会对您的字符串进行HTML编码。现在,默认情况下,一切都是HTML编码。如果您不希望Rails为您执行此操作,我们现在使用raw方法:

<%= raw @longurl %>

在此处详细了解raw方法: http://api.rubyonrails.org/classes/ActionView/Helpers/RawOutputHelper.html#method-i-raw

或阅读Rails 3发行说明中的​​此更改 http://edgeguides.rubyonrails.org/3_0_release_notes.html#other-changes