2014-10-18 13 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

相關問題