Number_to_currency() in the view?

On p. 93, AWDWR(3rd) it says,


…we could do this:

<%= sprintf("$0.02f", product.price) %

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()?

On May 2, 1:44 pm, 7stud – [email protected] wrote:


<%= 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()?

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.

Fred

Frederick C. wrote:

On May 2, 1:44�pm, 7stud – [email protected] wrote:


<%= 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()?

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.

How do you override a helper method?

On May 3, 12:15 am, 7stud – [email protected] wrote:

How do you override a helper method?

Same as any other method ? (although I suppose helper :all might throw
a slight spanner in the works)

Fred