I was wondering if there was a way of making a timer or a timed
activity on a webpage.
The purpose is a timed exam or test which the candidate will submit
and be taken to another page
based on the result. If the exam isn't submitted on time - it needs to
end automatically.
Being new to Ruby or RoR itself - I was hoping someone could point me
in the right direction to solve this problem.
This is done often on financial sites like banks and brokerages. Basically,
you have to use two devices. The first is JavaScript on the client that does
a redirect after time expires. Basically, you set a timer to the number of
seconds the user has, then after that time expires, your JavaScript is
called. That JavaScript just does the redirect:
That solves half the problem. The other half is if the client has JavaScript
turned off. For that, you need to store a last-access time in the session.
So, before serving a page, simple do this in your controller:
session[:last_access] = Time.now
Then before serving the next page:
redirect_to(:action => 'time_out' and return if session[:last_access] <
5.minutes.ago
I don't know if this applies to all actions in your controller or only some
of them. If all of them, consider writing a before_filter.