3

最近我正在将其中一个 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();..."
4

1 回答 1

0

Rails 3.0+ 默认具有 XSS 保护,而在 Rails 2.3 中,您需要使用帮助程序 h 才能使用它。

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

您可以在此 railscasts http://railscasts.com/episodes/204-xss-protection-in-rails-3中了解更多信息。

于 2013-10-10T09:52:33.893 回答