2010-12-17 37 views
0

嗨 當我保存這個字符串:存儲串與實體軌可變

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 %> 

一點也沒有使用它「T工作,當我檢查瀏覽器的源文件:

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;,我不知道如何來避免這種情況。

BTW似乎@url採取的是默認使用的軌道,我不能在變量保存什麼,誰能告訴我爲什麼?

感謝

回答

1

假設你正在使用Rails 3,儘量<%= @longurl.html_safe %>

1

您可以使用CGI::unescape解碼一個URL編碼的字符串。

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

對於HTML實體,使用CGI::unescapeHTML

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

你真正想要& 瞭解爲什麼在這裏:http://htmlhelp.com/tools/validator/problems.html

是在任何其他方式,「破」的方法,或只是因爲它看起來有什麼不同?

如果@url使用由滑軌,使用不同的變量。它不應該成爲一個交易斷路器。

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

+0

由於RAW和html_safe作品! – mko 2010-12-19 07:32:17

+0

雅,原始方法只是調用to_s.html_safe您傳遞的東西。所以,如果它不是已經是一個字符串,原材料將確保它是它調用之前html_safe。 – dontangg 2010-12-19 16:44:39