[英]Rails upgrade from 2.3 to 3.2 javascript rendering as text
最近我將其中一個rails應用程序從2.3版本升級到3.2版本。 我注意到在html.erb文件中編寫的javascript中的一個奇怪的行為。 這與我升級的其他應用之前從未發生過。
我正在升級到Ruby 1.9.3 Rails 3.2.14
目前jquery版本是1.4,一旦應用程序完全移植,我會將它升級到1.9或1.10。
這是問題所在。 每當我們在模板中編寫一些JS並且這個JS在某些時候具有更大的條件,那么之后編寫的任何JS代碼在頁面上呈現為文本而在firebug中沒有任何JS錯誤。 我已經附上了屏幕截圖請看看。
當我將該JS代碼刪除到.js文件中時,此問題就會消失。 我認為有必要將ERB模板解析為在rails 2.3應用程序中正常工作的相同代碼。
在屏幕截圖中,JS代碼呈現了類似的東西
" 0) jQuery("#li_" + caab_jurisdiction_name).show();..."
它開始像這樣的東西
"if (jQuery("#mortgage_product_group_econveyance_editions").attr("value").indexOf(caab_jurisdiction_value) > 0) jQuery("#li_" + caab_jurisdiction_name).show();..."
Rails 3.0+默認具有XSS保護,而在Rails 2.3中,您需要按順序使用幫助程序h。
為避免這種情況,您可以使用String#html_safe或helper raw。
您可以在此railscast中了解更多相關內容http://railscasts.com/episodes/204-xss-protection-in-rails-3 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.