Method: String#parameterize

Defined in:
activesupport/lib/active_support/core_ext/string/inflections.rb

#parameterize(separator: "-", preserve_case: false, locale: nil) ⇒ Object

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

If the optional parameter locale is specified, the word will be parameterized as a word of that language. By default, this parameter is set to nil and it will use the configured I18n.locale.

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>

To preserve the case of the characters in a string, use the preserve_case argument.

class Person
  def to_param
    "#{id}-#{name.parameterize(preserve_case: true)}"
  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>

See ActiveSupport::Inflector.parameterize.



215
216
217
# File 'activesupport/lib/active_support/core_ext/string/inflections.rb', line 215

def parameterize(separator: "-", preserve_case: false, locale: nil)
  ActiveSupport::Inflector.parameterize(self, separator: separator, preserve_case: preserve_case, locale: locale)
end