class StickyParams::StrongSessionParams

Attributes

controller[R]
prefix[RW]

Public Class Methods

new(controller) click to toggle source
# File lib/sticky_params/strong_session_params.rb, line 6
def initialize(controller)
  @controller = controller
  @prefix = "#{controller.controller_name}_#{controller.action_name}_"
end

Public Instance Methods

[](name) click to toggle source
# File lib/sticky_params/strong_session_params.rb, line 32
def [](name)
  session_param_name = "#{prefix}#{name}"
  controller.session['sticky_params'] ||= ActionController::Parameters.new
  if controller.params[name]
    fetch_from_params(name, session_param_name)
  elsif controller.session['sticky_params'][session_param_name]
    fetch_from_session(session_param_name)
  end
end
[]=(name, value) click to toggle source
# File lib/sticky_params/strong_session_params.rb, line 42
def []=(name, value)
  session_param_name = "#{prefix}#{name}"
  controller.session['sticky_params'] ||= ActionController::Parameters.new
  controller.session['sticky_params'][session_param_name] = controller.params[name] = value
end
clear!() click to toggle source

clears all sticky params for the current controller/action name

# File lib/sticky_params/strong_session_params.rb, line 49
def clear!
  if controller.session['sticky_params'].present?
    controller.session['sticky_params'].reject! do |key, _value|
      key.index(prefix) == 0
    end
  end
end
clear_all!() click to toggle source

clears all sticky parameters

# File lib/sticky_params/strong_session_params.rb, line 58
def clear_all!
  controller.session.delete('sticky_params')
end
fetch_from_params(name, session_param_name) click to toggle source
# File lib/sticky_params/strong_session_params.rb, line 11
def fetch_from_params(name, session_param_name)
  if controller.params[name].present?
    controller.session['sticky_params'][session_param_name] = controller.params[name]
  else
    controller.session['sticky_params'].delete session_param_name
    nil
  end
end
fetch_from_session(session_param_name) click to toggle source
# File lib/sticky_params/strong_session_params.rb, line 20
def fetch_from_session(session_param_name)
  result = controller.session['sticky_params'][session_param_name]

  # covert hash to action parameters for simulating a normal param
  if result.is_a?(Hash)
    result = ActionController::Parameters.new(result)
    controller.session['sticky_params'][session_param_name] = result
  end

  result
end