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