Ruby on rails 如何在呈现js.coffee文件以响应操作时进行转义

Ruby on rails 如何在呈现js.coffee文件以响应操作时进行转义,ruby-on-rails,coffeescript,Ruby On Rails,Coffeescript,我有一个控制器动作,它会以一个.js.coffee文件响应,我的Rails 3.2.12版本应该支持这个文件。问题是解析中的某些东西允许用户提供的数据导致javascript失败。我将示例简化如下: action.js.coffee文件: $('my_container').append("<%= j render(:partial => 'my_partial') %>") 实际呈现的javascript $('my_container').append("\"" + (t

我有一个控制器动作,它会以一个.js.coffee文件响应,我的Rails 3.2.12版本应该支持这个文件。问题是解析中的某些东西允许用户提供的数据导致javascript失败。我将示例简化如下:

action.js.coffee文件:

$('my_container').append("<%= j render(:partial => 'my_partial') %>")
实际呈现的javascript

$('my_container').append("\"" + (this(should(!be(evaluated)))) + "\"\n\n");

哇!发生了什么事?我可以通过删除文件名中的.coffee来解决这个问题,但这似乎是Rails的一个bug?

我通过更改js.coffee文件中的双引号来解决这个问题,但我仍然不确定这是一个bug。希望这能帮助其他人

更改:

$('my\u container')。追加('my\u partial')%%>”


$('my\u container')。追加('my\u partial')%>)

为什么不进行插值?CS在双引号中插入字符串,这看起来或多或少像CS代码;他只是碰巧在笔记中使用了#{},和我之前说过的一样:双引号中的CS字符串需要插值。单引号字符串不是。@DaveNewton:问题是
j
helper理解JavaScript,但不理解CoffeeScript。我不认为有任何辅助解决方案不会以这样或那样的方式失败。唯一明智的做法(IMO)是在任何地方都使用单引号,除非您特别需要插值。@muistooshort Correct,这就是问题所在。我已将所有双引号改为单引号。真正的问题是这是否会开启一些漏洞。在我的例子中,用户提供的内容有{},它公开了插值。
$('my_container').append("\"" + (this(should(!be(evaluated)))) + "\"\n\n");