0

我有一个基本的 .js 文件,里面有这个

//$('#show').html('<%= escape_javascript(render(:partial => 'show')) %>');

当 .js 文件被调用时,上面的代码被执行并且部分被渲染,即使它被注释掉了。当代码被删除时,部分永远不会被渲染。DOM 保持不变,但我可以看到服务器在命令行中呈现的部分内容。是什么赋予了?

4

4 回答 4

4

您正在注释掉在客户端执行的 JavaScript。

在客户端看到渲染的 JavaScript 之前,部分渲染发生在服务器端。

换句话说,注释掉 JavaScript 对服务器端处理的影响为零。如果您不希望显示服务器端字符串,请将其注释掉:

<%#= escape_javascript(etc) %>

让我们假设部分渲染是这样的:

<h1>Foo bar baz</h1>
<div>Plugh!</div>

为 JavaScript 转义 this 会将换行符变成一个\n(并且会转义单引号和双引号等),从而在客户端留下这个:

$('#show').html('<h1>Foo bar baz</h1>\n<div>Plugh!</div>');

无论 JS 是否被注释掉,除非你注释掉escape_javascriptRuby 代码的结果,否则部分都会呈现。

在客户端,如果 JS 被注释掉,它不应该更新show的 HTML——你是说它是吗?

于 2012-05-19T22:38:54.947 回答
0

我有一个类似的问题,并想出了一个解决方法来解决我想要的问题。也许这样的事情会帮助你!

与其将代码行注释掉,不如尝试构建一个逻辑运算符,让您在要运行的功能上进行“开/关”切换。我是这样设置的,所以我可以关闭脚本,但保留它以供将来参考:

var toggle = 1; 

if(toggle == 2){
   functions that you want to run when turned on... 
}

由于您的变量不等于 2,因此 if 语句不会呈现其中存储的内容,从而有效地为您“注释”该代码!要将其重新打开,您只需将“切换”变量更改回 2(或您想要的任何“打开”值)。我为自己找到了一些解决方法,希望对您有所帮助!

于 2014-12-02T14:26:27.117 回答
0

检查这是不是这条线,或者你在其他地方有这个电话:

//$('#show').html('<%=escape_javascript(render(:partial => 'show'))%>');alert('This is the line');
于 2012-05-19T09:42:25.243 回答
0

也许您的 escape_javascript 函数正在插入换行符?这将结束注释并导致执行换行符之后的任何内容。

于 2012-05-19T09:44:42.320 回答