【发布时间】:2017-09-12 02:30:25
【问题描述】:
我刚刚遇到了一个问题,即我的咖啡代码未按预期处理。所以,下面的代码
#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 还是一个特性,或者是渲染规则的结果?
【问题讨论】:
-
您的问题不清楚。试着用代码总结一下你之前在做什么,现在在做什么。
-
@ArslanAli 我添加了 smth。希望这会有所帮助,因为我不太确定,你是什么意思:任何东西都在描述(在我看来是这样 :))
标签: ruby-on-rails coffeescript escaping