我刚遇到一个问题,即我的咖啡代码没有像我预期的那样处理。那么,以下代码
#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') %>")
这就是诀窍!部分最终呈现。
所以,问题是:为什么它表现如此?这是一个错误或功能,还是由渲染规则引起的后续事情?
答案 0 :(得分:0)
你不能在以* .js结尾的文件中使用ruby脚本是纯粹的javascript。 您应该使用* .js.erb或* .js.coffee.erb更改文件结尾 并且将能够使用rails helpers
答案 1 :(得分:0)
我意识到,我在那里做错了,所以我唯一需要的是javascript_tag
来包装我想要呈现的JS代码。