This would work, but it embeds knowledge of currency formatting into the
view. Should we want to internationalize the application later, this
would be a maintenance problem.
<Goody. Let’s move the formatting out of the view and into a more
centralized location. The Product model? Hmm…maybe, but not all
calls to the Product model will want the number converted to a formatted
string. The ProductsController then? Yes, yes. That must be it!>
Instead, let’s use a helper method to format the price as a currency.
…
… <%= number_to_currency(product.price) %
Wt?? How does that solve any maintenance issues. If I later want to
change the view to display a different format, what’s the difference
between having to change the parameters of number_to_currency()
everywhere it appears vs. changing the format of sprintf()?
Wt?? How does that solve any maintenance issues. If I later want to
change the view to display a different format, what’s the difference
between having to change the parameters of number_to_currency()
everywhere it appears vs. changing the format of sprintf()?
Well rather than having format strings spread all over the place, you
centralized the concept of formatting a number in one place, the
number_to_currency method. If you wanted to change currency formatting
you’d just have to change that one helper.
Wt?? �How does that solve any maintenance issues. �If I later want to
change the view to display a different format, what’s the difference
between having to change the parameters of number_to_currency()
everywhere it appears vs. changing the format of sprintf()?
Well rather than having format strings spread all over the place, you
centralized the concept of formatting a number in one place, the
number_to_currency method. If you wanted to change currency formatting
you’d just have to change that one helper.