【问题标题】:Rails upgrade from 2.3 to 3.2 javascript rendering as textRails 从 2.3 升级到 3.2 javascript 呈现为文本
【发布时间】:2013-10-10 09:31:23
【问题描述】:

最近我正在将其中一个 rails 应用程序从 2.3 版本升级到 3.2 版本。而且我注意到在 html.erb 文件中编写的 javascript 中有一个奇怪的行为。这在我升级的其他应用程序中从未发生过。

我正在升级到 红宝石 1.9.3 导轨 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();..."

【问题讨论】:

    标签: javascript jquery ruby-on-rails erb


    【解决方案1】:

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

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

    您可以在此 railscasts http://railscasts.com/episodes/204-xss-protection-in-rails-3 中阅读有关它的更多信息。

    【讨论】:

    • 不,不,你没有这个问题。它不是 ruby​​ 字符串,它是视图文件中编写的 JS。它只是一个简单的 HTML,在 script 标签中有一些 javascript 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多