module Backable::ControllerConcern
Public Instance Methods
backable_back_path( fallback=nil )
click to toggle source
# File lib/backable/controller_concern.rb, line 32 def backable_back_path( fallback=nil ) back = backable_history.last fallback = Backable.fallback_url return fallback unless back back_param = backable_param( backable_history[0..-2] ) back.index('?') ? "#{back}&back=#{CGI::escape(back_param)}" : "#{back}?back=#{CGI::escape(back_param)}" end
backable_future()
click to toggle source
# File lib/backable/controller_concern.rb, line 28 def backable_future @backable_future ||= [] end
backable_history()
click to toggle source
# File lib/backable/controller_concern.rb, line 20 def backable_history @backable_history ||= begin (params[:back] || "").split('|').map do |v| v end end end
backable_param( history=nil)
click to toggle source
# File lib/backable/controller_concern.rb, line 15 def backable_param( history=nil) history ||= (backable_history + backable_future) history.map{ |bi| bi.to_s }.join("|") end
backable_push(path)
click to toggle source
# File lib/backable/controller_concern.rb, line 41 def backable_push(path) path = polymorphic_path(path) if !path.kind_of?( String ) backable_future << path.to_s end
backable_url_for( link_options, extra_options = {} )
click to toggle source
# File lib/backable/controller_concern.rb, line 46 def backable_url_for( link_options, extra_options = {} ) args = extra_options.merge( back: backable_param ) # support for strings if link_options.kind_of?( String ) url = link_options url << ( link_options.index('?') ? '&' : '?' ) url << args.to_query url else polymorphic_url( link_options, args ) end end