I am trying to capitalize first letter of each word in a string of
words, which is in a given string. I see there is a reference to this
at:
which states to add two method to string class to capitalize first
letter
class String
def capitalize_first_letter
self[0].chr.capitalize + self[1, size]
end
def capitalize_first_letter!
unless self[0] == (c = self[0,1].upcase[0])
self[0] = c
self
end
end
end
My question is, if I create this String class – what is it? Is it a
model? A helper? Where in the world would you put this creature in a
Rails framework? Thanks, Janna
Well, those two methods won’t give you what you want, if you really want
to capitalize the first letter of every word in a sentence. Also, if
you
just want to capitalize the first letter of the string, the built-in
capitalize method will do that for you:
‘some string’.capitalize => ‘Some string’
If you want to capitalize each word in a string, you could do this (a
naive
approach):
If you then wanted to make this built-in to the String class, as you
were
referencing in your original request, you could add a method that does
this
to the String class by reopening it (like the example you posted):
class String
def cap_words
self.split(’ ‘).map {|w| w.capitalize }.join(’ ')
end
end
You could put this snippet of code in a file in config/initializers or
(as
my preferred approach would be) in a file in lib (like
lib/extensions/string.rb) that is then required via an initializer (like
config/initializers/requires.rb): require ‘extensions/string’
Now you have reopened String to add this method. Whether that’s a good
idea
is another matter entirely.