Rails从2.3升级到3.2 javascript呈现为文本

时间:2013-10-10 09:31:24

标签: javascript jquery ruby-on-rails erb

最近我将其中一个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应用程序中正常工作的相同代码。

enter image description here

在屏幕截图中,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();..."

1 个答案:

答案 0 :(得分:0)

Rails 3.0+默认情况下具有XSS保护,而在Rails 2.3中,您需要按顺序使用帮助程序h。

为避免这种情况,您可以使用String#html_safe或helper raw。

您可以在此railscast http://railscasts.com/episodes/204-xss-protection-in-rails-3中详细了解该内容。