.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
내가 JSON 변환 job
라는 루비 객체를 보유하고 있습니다. JSON 객체를 다시 Ruby 객체로 변환하고 그 속성을 사용하여 자바 스크립트 문자열을 생성하려고합니다. 이 예제에서는 단순히 data["id"]
을 사용할 수 있지만이 코드는 샘플 코드 일 뿐이므로 복잡한 루비가 필요합니다.
이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 패스와 결과 자바 스크립트를 독립적으로 생각해야한다고 말하려고했습니다. ERB는 루비 랜드에서 텍스트를 조작하는 반면, 결과 자바 스크립트는 ERB 조작이 발생한 텍스트와 함께 작동합니다. 문제의 오류는 데이터 변수가 루비/ERB 토지에 정의되어 있다고 생각한 결과였습니다. '티. – Puhlze