最近我将其中一个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();..."
答案 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中详细了解该内容。