簡體   English   中英

Rails從2.3升級到3.2 javascript呈現為文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM