我刚刚遇到了一个问题,我的咖啡代码没有按预期处理。那么,下面的代码
#app/views/smth/edit.slim
- content_for :js_scripts
coffee:
$ ->
$("#destination-id").html("<%= escape_javascript(render :partial => 'pages') %>")
.smth-page
#some slim-html-code here
<%= escape_javascript(render :partial => 'pages') %>
在我看来,它是纯文本。不是部分代码,只是带有此代码的纯文本
app/assets/javascript
.“此外,还有一些逻辑,所以这样做更漂亮。好的,我移动了它,就像这样:
#app/assets/javascripts/vid/smth.coffee
class Vid.Smth
constructor: =>
$("#destination-id").html("<%= escape_javascript(render :partial => 'pages') %>")
#app/views/smth/edit.slim
- content_for :js_scripts
coffee:
$ ->
new Vid.Smth()
但一切都没有改变。
谷歌展示了很多没有答案和建议的问题,比如
-
将单引号替换为双引号,反之亦然;
-
escape_javascript
具有
j
;
-
raw
;
-
.js
,
.erb
,
.js.coffee.erb
等
在文件名中
等等没有任何帮助。
# app/views/smth/edit.slim
...
= render :partial 'test'
#app/views/smth/_test.coffee
$("#destination-id").html("<%= escape_javascript(render :partial => 'pages') %>")
这就成功了!最终渲染的部分。
所以,问题是:为什么它的行为如此?这是一个bug还是一个特性,或者是渲染规则产生的结果?