Convert comma to point as delimiter

weltschmerz picture weltschmerz · Jul 15, 2013 · Viewed 9k times · Source

How can I convert user number input from something like 11,5 to 11.5?

I have tried the following as callback:

before_validation :comma_to_delimiter

def comma_to_delimiter
  self.price.to_s.gsub(',', '.').to_f
end

But this doesn't work. I want the user to be able to type in whatever he wants as delimiter - currently, the app throws an error when the user uses a comma instead of a point.

Answer

Matt picture Matt · Jul 15, 2013

What you're doing may not be the best way, so perhaps someone can answer with a better approach. But to get your line working you need to make it actually persist the change.

self.price.to_s.gsub(',', '.').to_f

Will just return the change, but that doesn't go anywhere in a callback!

self.price = self.price.to_s.gsub(',', '.').to_f
# OR
self.price.to_s.gsub!(',', '.').to_f

Will persist the change within the object.