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