如果是第一次访问该网站,我正在尝试让用户填写调查问卷。
我的控制器设置如下:
class MainController < BaseController
end
class BaseController < ApplicationController
before_filter :first_time_visiting?
end
class ApplicationController < ActionController::Base
def first_time_visiting?
if session[:first_time].nil?
session[:first_time] = 1
redirect_to questionnaire_path unless current_user
end
end
end
当我关闭浏览器并重新打开它时,我总是被重定向到调查问卷。
答案 0 :(得分:6)
您必须在浏览器中为该用户设置一个cookie,以便以后允许检测,即在用户关闭浏览器之后。在rails中设置和读取cookie很容易。查看文档以获取一些示例用法。 http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html
答案 1 :(得分:1)
偶然发现这个问题,我的解决方案只是jquery并涉及设置localStorage(确保你有一个polyfill)。隐藏您想要只显示一次的元素。
$(function() {
if ( localStorage.getItem('visited') ) {
return;
}
var $el = $('.only-show-on-first-visit');
$el.slideDown(800);
localStorage.setItem('visited', true);
$el.find('.close').click(function() {
$el.slideUp();
});
});
// polyfill
if (!('localStorage' in window)) {
window.localStorage = {
_data : {},
setItem : function(id, val) { return this._data[id] = String(val); },
getItem : function(id) { return this._data.hasOwnProperty(id) ? this._data[id] : undefined; },
removeItem : function(id) { return delete this._data[id]; },
clear : function() { return this._data = {}; }
};
}
答案 2 :(得分:0)
在用户表格中添加“上次登录时间”字段。当那是没有做foo和!nil做吧。