module SluggableDaveJul

module for creating slugs

Public Instance Methods

append_suffix(str, count) click to toggle source
# File lib/sluggable_dave_jul.rb, line 28
def append_suffix(str, count)
  if str.split('-').last.to_i != 0
    return str.split('-').slice(0...-1).join('-') + '-' + count.to_s

  else
    return str + '-' + count.to_s
  end
end
generate_slug!() click to toggle source
# File lib/sluggable_dave_jul.rb, line 14
def generate_slug!
  the_slug = to_slug(self.send(self.class.slug_column.to_sym))
  obj = self.class.find_by slug: the_slug
  count = 2
  while obj && obj != self
    the_slug = append_suffix(the_slug, count)
    obj = self.class.find_by slug: the_slug
    count += 1
  end
  self.slug = the_slug.downcase
  # self.slug = self.title.sub(" ","-").downcase # prefer the following
  # self.slug = self.title.parameterize # rails way without gem
end
to_param() click to toggle source
# File lib/sluggable_dave_jul.rb, line 44
def to_param
  self.slug
end
to_slug(name) click to toggle source
# File lib/sluggable_dave_jul.rb, line 37
def to_slug(name)
  str = name.strip
  str.gsub! /\s*[^A-Za-z0-9]\s*/, '-'
  str.gsub! /-+/, '-'
  str.downcase
end