我是Rails的新手,我正在为在线测验开发示例应用程序。
我已经成功开发了该应用程序。现在我想为我的应用程序添加Timing Constraint。
但是,我不知道如何在问题中添加计时器。我浏览了各种博客,但我找不到合适的答案。
但我在AJAX和JavaScript中找到了许多用于计时器的编码。
让我知道我们能够或者能够在Ruby上编写定时器控件吗?
我希望能够完成我的第一份申请。
答案 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.html和coundown gem并精确地使用它来实现计时器功能。
希望它能帮助.....