Sha256: 54eefe73d658e36af64c7108a2eb5d75c428e34948d75c98d6271533fe1b0766
Contents?: true
Size: 1.48 KB
Versions: 11
Compression:
Stored size: 1.48 KB
Contents
module ResourceController module Urligence def smart_url(*objects) urligence(*objects.push(:url)) end def smart_path(*objects) urligence(*objects.push(:path)) end def hash_for_smart_url(*objects) urligence(*objects.unshift(:hash_for).push(:url).push({:type => :hash})) end def hash_for_smart_path(*objects) urligence(*objects.unshift(:hash_for).push(:path).push({:type => :hash})) end def urligence(*objects) config = {} config.merge!(objects.pop) if objects.last.is_a?(Hash) objects.reject! { |object| object.nil? } url_fragments = objects.collect do |obj| if obj.is_a? Symbol obj elsif obj.is_a? Array obj.first else obj.class.name.underscore.to_sym end end unless config[:type] == :hash send url_fragments.join("_"), *objects.flatten.select { |obj| !obj.is_a? Symbol } else params = {} unparsed_params = objects.select { |obj| !obj.is_a? Symbol } unparsed_params.each_with_index do |obj, i| unless i == (unparsed_params.length-1) params.merge!((obj.is_a? Array) ? {"#{obj.first}_id".to_sym => obj[1].to_param} : {"#{obj.class.name.underscore}_id".to_sym => obj.to_param}) else params.merge!((obj.is_a? Array) ? {:id => obj[1].to_param} : {:id => obj.to_param}) end end send url_fragments.join("_"), params end end end end
Version data entries
11 entries across 11 versions & 3 rubygems