Что я делаю: я пытаюсь создать простой механизм опроса с ES6.
Оптимально, он должен обновлять частичное на странице index
каждые 5 секунд.
Не работаетЖурналы пишут, что шаблон был обработан, но в браузере ничего не происходит.
app / javascript / packs / polls.js.erb:
var sleep = time => new Promise(resolve => setTimeout(resolve, time))
var poll = (promiseFn, time) => promiseFn().then(
sleep(time).then(() => poll(promiseFn, time)))
poll(() => new Promise(() => {
fetch('/shows/refresh_results', {
method: 'GET'
})//.then(response => {
// document.getElementById('top-shows-table-container').innerHTML = ("<%= j render partial: 'shows/top_shows_table' %>");
// })
}), 5000)
app / controllers / application_controller.rb:
class ShowsController < ApplicationController
def index
@shows = Shows::OrderedByAverageReviewsScoreQuery.new.call
end
def refresh_results
@shows = Shows::OrderedByAverageReviewsScoreQuery.new.call
respond_to do |format|
format.js
end
# render :index # this one doesn't work either
end
end
app / views / shows / refresh_results.js.erb:
$('#top-shows-table-container').html("<%= render 'top_shows_table' %>");
CommentPoller.poll();
По данным журналов, последний файл вызывается.Но со страницей в браузере ничего не происходит.
Started GET "/shows/refresh_results" for 127.0.0.1 at 2018-12-05 03:06:06 +0300
Processing by ShowsController#refresh_results as */*
Rendering shows/refresh_results.js.erb
Rendered shows/refresh_results.js.erb (0.5ms)
Completed 200 OK in 6ms (Views: 3.6ms | ActiveRecord: 0.0ms)
Я также попытался вставить .erb-код непосредственно в .polls.js
, что тоже не сработало.В настоящее время это закомментировано.Если я раскомментирую его, он выдаст эту ошибку:
ERROR in ./app/javascript/packs/polls.js.erb
Module build failed: Error: rails-erb-loader failed with code: 1
at ChildProcess.<anonymous> (/home/.../projects/leaderboard-challenge/node_modules/rails-erb-loader/index.js:125:16)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:920:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)