2014-10-18 61 views
2

我是Rails的新手,我正在开发在线测验的示例应用程序。如何在测验中包含“计时器控制”应用程序

我已经成功开发了应用程序。现在我想为我的应用程序添加时序约束。

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

但我在AJAX和JavaScript中发现了很多用于定时器的编码。

让我知道我们可以或不可以在rails上写定时器控件吗?

我想让你的指导完成我的第一个应用程序。

回答

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> 

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

对不起,如果这真的是一个不好的解释。希望这将有助于

+0

它给了我一个很好的推动。我会用我的应用程序来检查。 – 2014-10-18 10:46:17

1

像应用测验,我建议你保持timestamp当测验呈现页面,并使用该timestamp再次使用setimeout from jquery警报形成用户将submitted.For 服务器端所有你需要的是有一个专门的用于存储timestamp当页面呈现。您可以通过使用在客户端的设置timestamp一个隐藏字段值和使用jquery用它在你的页面。例如像这样fiddle ...你也可以参考http://keith-wood.name/countdown.htmlcoundown gem并精确使用它来实现定时器功能。 希望它帮助.....

+0

我会尝试与我的应用程序伙伴的想法。 – 2014-10-18 10:47:00

相关问题