आप यह पता लगा सकते हैं, लेकिन यह नहीं है सुंदर।
class JavascriptController < ApplicationController
def confirm
session[:javascript_updated] = Time.now
end
end
इसके बाद आप अपने सभी पृष्ठों तो यह नियंत्रक कार्रवाई प्रत्येक पृष्ठ पर कहा जाता है में एक जावास्क्रिप्ट कार्रवाई शामिल करने की जरूरत:
सबसे पहले, आप एक एक्शन उस सत्र में एक समय समाप्ति अद्यतन करता है के साथ एक नया नियंत्रक की जरूरत है भार। सबसे आसान तरीका यह है कि इसे अपने "लेआउट में शामिल" जावास्क्रिप्ट-पुष्टिकरण "फ़ाइल पर शामिल किया जाए (इस विशेष उदाहरण पर मैंने प्रोटोटाइप के अजाक्स.रूक्वेस्ट का इस्तेमाल किया था, इसलिए आपको इसे अपनी जावास्क्रिप्ट पर भी शामिल करना होगा):
function confirmJavascript()
{
// Assuming you are using Prototype
new Ajax.Request('/JavascriptController/confirm');
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 10000); // invoke each 10 seconds
यह आपके सभी पृष्ठ दृश्यों में पुष्टि कार्रवाई का आह्वान करेगा। अंत में, आपको यह नियंत्रित करना होगा कि आपके एप्लिकेशन नियंत्रक में आपकी अंतिम पुष्टि के बाद से कितना समय बीत चुका है।
class ApplicationController < ActionController::Base
JAVASCRIPT_TIME_LIMIT = 10.seconds
before_filter :prepare_javascript_test
private
def prepare_javascript_test
if (session[:javascript_updated].blank? or
Time.now - session[:javascript_updated] > ApplicationController::JAVASCRIPT_TIME_LIMIT)
@javascript_active = true
else
@javascript_active = false
end
end
end
अब आप एक चर अपने सभी नियंत्रकों में @javascript_active
बुलाया जाएगा।
यह तब भी काम करना चाहिए जब उपयोगकर्ता 10 सेकंड की सटीकता के साथ जावास्क्रिप्ट को सक्रिय/निष्क्रिय करता है।यह तब काम नहीं कर सकता है जब आपके कुछ पेज लोड होने के लिए 10 पृष्ठों से अधिक समय लेते हैं (यानी बहुत सारी छवियों के साथ)। उस मामले में समय सीमा बढ़ाएं (एप्लिकेशन नियंत्रक और आपकी जावास्क्रिप्ट पर)
अस्वीकरण: मैंने इस कोड का परीक्षण नहीं किया है, कुछ कीड़े छिपी हो सकती हैं - लेकिन यह आपको सही दिशा में इंगित करनी चाहिए।
क्या आपका मतलब है कि आपका सर्वर जावास्क्रिप्ट चला सकता है? यदि नहीं, तो आप बस नहीं कर सकते हैं। – shinkou
आप सर्वर की तरफ नहीं जा सकते हैं, लेकिन यहां एक सरल रेल समाधान है: [रेल जावास्क्रिप्ट पहचान पर रूबी] (http://stackoverflow.com/questions/745613/ruby-on-rails-javascript-detection) – Yarin