Method: ActiveSupport::Inflector#parameterize

Defined in:
lib/jinx/active_support/inflector.rb

#parameterize(string, sep = '-') ⇒ Object

Replaces special characters in a string so that it may be used as part of a ‘pretty’ URL.

Examples

class Person
  def to_param
    "#{id}-#{name.parameterize}"
  end
end

@person = Person.find(1)
#=>#<Person id: 1, name: "Donald E. Knuth">

<%= link_to(@person.name, person_path %>
#=><a href="/person/1-donald-e-knuth">Donald E. Knuth</a>


261
262
263
264
265
266
267
268
269
270
271
272
# File 'lib/jinx/active_support/inflector.rb', line 261

def parameterize(string, sep = '-')
  re_sep = Regexp.escape(sep)
  # replace accented chars with ther ascii equivalents
  parameterized_string = transliterate(string)
  # Turn unwanted chars into the seperator
  parameterized_string.gsub!(/[^a-z0-9\-_\+]+/i, sep)
  # No more than one of the separator in a row.
  parameterized_string.squeeze!(sep)
  # Remove leading/trailing separator.
  parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '')
  parameterized_string.downcase
end