Rails обнаруживает, если пользователь самый первый визит - PullRequest
7 голосов
/ 14 февраля 2011

Я пытаюсь заставить пользователя заполнить анкету, если он впервые посещает сайт.

Мои контроллеры настроены так:

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

Когда я закрываю браузер и снова открываю его, меня всегда перенаправляют на анкету.

Ответы [ 3 ]

6 голосов
/ 14 февраля 2011

Вы должны установить cookie в браузере для этого пользователя, чтобы разрешить обнаружение в более позднее время, то есть после того, как пользователь закроет браузер.Установка и чтение куки в рельсах очень проста.Ознакомьтесь с документацией для примера использования.http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

1 голос
/ 29 января 2016

Наткнулся на этот вопрос, мое решение - просто 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 = {}; }
  };
}
0 голосов
/ 14 февраля 2011

Добавьте поле «время последнего входа в систему» ​​в вашей пользовательской таблице.Когда это ноль, делай foo и! Ниль, делай бар.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...