. js.ERB不能识别变量

.JS.ERB can't recognize variables

本文关键字:变量 识别 不能 ERB js      更新时间:2023-09-26

我是新手。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代码混在一起。