0
我是新来的.js.erb文件,我使用它们是因为我需要构建需要Ruby变量的Javascript字符串。.JS.ERB无法识别变量
这是我的代码。
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
我转换为JSON Ruby对象。我想将该JSON对象转换回Ruby对象并使用它的属性来构造一个Javascript字符串。我知道在这个例子中我可以简单地使用data["id"]
,但这只是示例代码,我需要更多更复杂的Ruby东西来进入该字符串。
当我尝试启动服务器,并加载一个网页,我收到此错误:
undefined local variable or method `data' for #<#:0x007ffe07cb7e58> (in /PATH/javascripts/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'
这是否意味着命名你的文件something.js.erb不一定允许你访问你的js文件中的控制器变量? – ahnbizcad
不,我只是想说,你必须独立思考ERB传递和由此产生的JavaScript。再培训局正在操作红宝石土地上的文字,而所产生的JavaScript将与ERB操作产生的任何文本一起工作。我认为这个问题的错误是认为数据变量是在红宝石/ ERB土地上定义的,当它没有时“T。 – Puhlze