Module: CookieTracker::ControllerAdditions

Defined in:
lib/cookie_tracker/controller_additions.rb

Overview

Description

The ControllerAdditions module is mixed in to ActionController::Base providing the initialize_cookie_tracker instance method for use in your controllers.

The initialize_session_tracker method works identically to the initialize_cookie_tracker method but stores values in the session instead of cookies.

Usage

To initialize the various cookies that you wish to track, execute the method in a before_filter call.

ArticlesController < ApplicationController
  before_filter :define_cookies_to_track

  def index
  end

  def define_cookies_to_track
    initialize_cookie_tracker(:cookie_one => 'initial_value', :sort_by => 'date')
  end

This will create instance variables and cookies that match the key names from your hash. CookieTracker will track the params[] hash and these instance variables and cookies will be updated when new values are sent via the request.

@cookie_one == 'initial_value'
=> true
@sort_by == 'date'
=> true
cookies[:cookie_one] == 'initial_value'
=> true
cookies[:sort_by] == 'date'
=> true

Instance Method Summary collapse

Instance Method Details



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cookie_tracker/controller_additions.rb', line 33

def initialize_cookie_tracker(parameters={})
  expire_date   = CookieTracker.configuration[:cookie_expire_date] || 1.days.from_now
  custom_domain = CookieTracker.configuration[:cookie_tracker_custom_domain] || nil
  
  parameters.each do |setting,value|
    cookies[setting].nil? ? instance_variable_set("@#{setting}",value) : instance_variable_set("@#{setting}",cookies[setting])
    instance_variable_set("@#{setting}",params[setting].squish) unless params[setting].nil?
    cookies[setting] = {
      :value   => instance_variable_get("@#{setting}"),
      :expires => expire_date,
      :domain  => custom_domain
    }
  end
end

#initialize_session_tracker(parameters = {}) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/cookie_tracker/controller_additions.rb', line 48

def initialize_session_tracker(parameters={})
  parameters.each do |setting,value|
    session[setting].nil? ? instance_variable_set("@#{setting}",value) : instance_variable_set("@#{setting}",session[setting])
    instance_variable_set("@#{setting}",params[setting].squish) unless params[setting].nil?
    session[setting] = instance_variable_get("@#{setting}")
  end
end