如何为Quiz App添加“定时器控制”

时间:2014-10-18 07:26:29

标签: ruby-on-rails ruby-on-rails-4 timer countdowntimer

我是Rails的新手,我正在为在线测验开发示例应用程序。

我已经成功开发了该应用程序。现在我想为我的应用程序添加Timing Constraint。

但是,我不知道如何在问题中添加计时器。我浏览了各种博客,但我找不到合适的答案。

但我在AJAX和JavaScript中找到了许多用于计时器的编码。

让我知道我们能够或者能够在Ruby上编写定时器控件吗?

我希望能够完成我的第一份申请。

2 个答案:

答案 0 :(得分:1)

我有疯狂的测验申请。我的应用程序有一个存储测验时间的模型,例如:

Quiz table attribute :
- time -> integer

Timer Table attribute :
- start_quiz -> Datetime
- end_quiz -> Datetime
- end_timing_quiz -> Datetime
- finished -> boolean
- user_id -> integer
- quiz_id -> integer

Illustartion:

管理员进行测验并将time放入测验(以分钟为单位)。

当用户获得测验时,使用time计算DateTime.now,然后保存到end_timing_quiz

def start_quiz
 @quiz = Quiz.find(params[:id]
 # check if user started of quiz.
 if Timer.where(:quiz_id => @quiz.id, :user_id => current_user.id).empty?
   @now = DateTime.now
   @end = @now + @quiz.time.minutes
   @time = Timer.create(:quiz_id => @quiz.id, :user_id => current_user.id, :start_quiz => @now, :end_timing_quiz => @end, :finished => false)
 else
   @time = Time.where(:quiz_id => @quiz.id, :user_id => current_user.id).first
 end
end

在视图中,您可以使用jQuery Countdown,并从@time

结束时间
<%= javascript_include_tag "countdown" %>

<div class="countdown"></div>

<script type="text/javascript">

    $(document).ready(function() {
        var date = new Date('<%= @time.end_timing_quiz %>'.replace(/\-/g,'\/').replace(/[T|Z]/g,' '));
        $('.countdown').countdown({
            until: date,
            format: 'dHMS'
        });
    });

</script>

因此,即使用户在测验过期前离开测验或重新加载浏览器,计时器仍然倒计时,用户也无法控制计时器。

对不起,如果这真的是一个糟糕的解释。希望这会有所帮助

答案 1 :(得分:1)

对于类似于app的测验,我建议您在呈现测验页面时保持timestamp,并使用setimeout from jquery再次使用timestamp 提醒用户该表单将被提交。对于服务器端,您只需要有一个专用列,用于在呈现页面时存储timestamp。您可以通过设置隐藏字段值在客户端使用timestamp,并使用jquery在您的页面中使用它...例如此fiddle。 ..你也可以参考http://keith-wood.name/countdown.htmlcoundown gem并精确地使用它来实现计时器功能。 希望它能帮助.....