Я пытаюсь реализовать индикатор выполнения (Javascript) с приложением Ruby on Rails, но мне не удается передать значения от контроллера в JS для обновления панели.Как передать переменную из Rails в Ajax
Первоначально я попытался использовать простую глобальную переменную ($ count), но после загрузки переменная всегда одна и та же. Он не обновляется в стороне JS.
EDIT:
Теперь я использую гон драгоценный камень, чтобы передать значение. Но я получаю только первое значение (которое было установлено при запуске контроллера). Когда я вызываю метод, вызванный нажатием кнопки, значение обновляется, но переменная gon всегда одна и та же. Может быть, ошибка в рельсах/контроллере?
Я увидел пример с методом, чтобы вывести переменную в gon, но не работает.
Примечание: Если удалить инициализацию перед началом поиска, если при поиске щёлкнули JS сторона показывает "гон переменной неопределенную"
Пример кода: application_controller.rb
def application
@count =0 #gon assumes only this value
exposeUnProcessedJobToJavascript
if params[:search]
while(@count < 10)
exposeUnProcessedJobToJavascript
sleep 3
@count +=1
end
end
def exposeUnProcessedJobToJavascript
gon.watch.job = @count
end
end
application.js. erb
function addJobWatchers() {
if (gon.job != undefined) {
gon.watch('job', {
interval: 1000
}, updateProcessingJob);
}
}
function updateProcessingJob(job) {
if (job) {
console.log("JOB: " + job);
}
}
$(document).on('page:change', function() {
$("#search_button").click(function() {
console.log("click search");
if (typeof gon !== 'undefined') {
addJobWatchers();
}
});});
Я уже пробовал gon gem, но он тоже не работал. Дайте ошибку при попытке доступа к переменной в js-стороне «: undefined». Вы знаете ошибку? – koxta
Как вы устанавливаете переменную gon в бэкэнд и как вы называете ее на стороне js? –
В контроллере я устанавливаю его gon.var = 50 и в js-файле пытаюсь получить gon.var. Только это. С gon требуется в заголовке HTML-файла. – koxta