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