. js.ERB不能识别变量
.JS.ERB can't recognize variables
我是新手。js。我之所以使用它们,是因为我需要构造一个需要Ruby变量的Javascript字符串。
这是我的代码。
pusher.js.erb
var pusher = new Pusher(PUSHER KEY);
var myChannel = pusher.subscribe('job_channel');
$(document).ready(function() {
myChannel.bind('job_added', function(data) {
addJob(data)
});
function addJob(data) {
<% job = JSON.parse(data) %>
var new_job = "HELLO <%= job.id %>";
$('.job_list').append(new_job)
};
});
data
保存一个名为job
的Ruby对象,我将其转换为JSON。我想将JSON对象转换回Ruby对象,并使用其属性来构造Javascript字符串。我知道我可以在这个例子中简单地使用data["id"]
,但这只是示例代码,我需要更复杂的Ruby东西来进入这个字符串。
当我尝试启动服务器并加载页面时,我得到这个错误:
未定义的局部变量或方法' data'为#<#:0x007ffe07cb7e58>(在/道路/javascript/pusher.js.erb)
app/assets/javascripts/pusher.js.erb:17:in `block in singletonclass'
app/assets/javascripts/pusher.js.erb:65530:in `instance_eval'
app/assets/javascripts/pusher.js.erb:65530:in `singletonclass'
app/assets/javascripts/pusher.js.erb:65528:in `__tilt_70364478302900'
app/views/layouts/application.html.erb:21:in `_app_views_layouts_application_html_erb___1231815935649534974_70364476328360'
ERB通过文本并根据它在某些转义序列中看到的ruby代码执行操作或写出文本。ERB将处理两个转义序列:
<% job = JSON.parse(data) %>
var new_job = "HELLO <%= job.id %>";
data没有在ERB/ruby作用域中定义,这就是为什么你会看到上面的错误。看起来你可能会把ERB/ruby代码和javascript代码混在一起。
相关文章:
- 函数无法识别初始化的变量
- angular/javascript无法识别函数内部的全局变量
- 在javascript中未将变量识别为变量
- 在JSP函数中写入的变量无法识别
- ng使用一个不识别临时变量形式ng repeat的函数绑定html
- javascript函数无法识别传递给它的角度变量
- 无法识别一个 js 文件中的变量
- JavaScript 如何重新识别事件对象变量
- 为多个变量定义相同的类型,在Webstorm中识别
- 在javascript中创建的按钮无法识别变量
- 全局范围内的变量在 javascript 中无法识别
- JavaScript 函数无法识别同一文档中的变量
- 下划线 _.模板无法识别变量
- 我的 Jquery 变量无法识别里面的其他变量
- 为什么内部 html 的 src 属性无法识别我的动态生成的变量
- 全局变量无法识别 Javascript
- 双向绑定不识别 AngularJS 中的变量变化
- Javascript 无法识别函数中的变量
- 为什么没有识别全局变量(内部函数)
- Adobe DTM 无法将角度变量识别为数据元素