В настоящее время я создаю приложение для викторины Rails с таймером, который отсчитывает оставшиеся секунды, чтобы ответить на вопрос.
В моей первой версии я сделал это простым способом: создав переменную для таймера, экземпляр в секундах, а затем сделав его частью JavaScript Javascript, например:
Quiz = function() {
this.quizCurrent = 0;
this.score = 0;
this.seconds = 10;
this.timing = this.seconds;
this.container = $('#trivia');
this.participationId = null;
}
Quiz.prototype.init = function() {
$('#trivia').on('click', '.btn.btn-primary-questions', this.checkAnswer.bind(this));
$('div.timer strong').text(this.seconds)
this.start();
}
Теперь я хотел бы переместить это на бэкэнд с помощью Rails. Предыдущий вопрос ссылается на обратный отсчет gem, но это, кажется, представляет две проблемы:
1) Мне нужно будет многократно называть дату/время и проверять для каждого вопроса (что я не думаю, что могу делать с обратным отсчетом), и;
2) В идеале я мог бы передать это значение в Javascript как переменную.
В документации для этого драгоценного камня он показывает, как вы можете напрямую передать время обратного отсчета в представление. Тем не менее, я использую значение обратного отсчета (другими словами, когда оно достигает нуля), чтобы заставить пользователя задавать следующий вопрос во время записи неправильного ответа, как показано ниже, как часть моей проверки:
Quiz.prototype.timer = function() {
var that = this;
this.timing--;
$('div.timer strong').text(this.timing);
if (this.timing <= 0) {
self.stop();
$.getJSON('/api/skip_question/' + this.participationId, function() {
that.nextQuestion();
})
}}
Любые идеи о том, как я могу "проверить" время на бэкэнд, но при этом проверять викторину, чтобы убедиться, что время не закончилось?