Form field --display :decimal 0.0 as 0.00, or blank?

Howdy --

I have a price field in my db, :decimal, :null => false, :default => 0

When I open a new form field to create a new record, this value is displayed as "0.0". This is not so pretty for a field in which a price like "123.45" is expected. Ideally I would like to have the field blank (I'll validate for numeric at submit time). I'm aware of the format_as_currency helper, but I am not sure how/if I would use it in a form context.

Bonus question: I am currently validating acceptable characters in a javascript onkeyup event (get rid of anything not a digit, decimal or comma). Is there anything that comes for free that I have missed, or a good plugin out there to help with what I would think is a fairly common use case?

Obviously, I'm a rails noob :slight_smile:

Regards, and thanks!

Tom

Thanks. Yes, your solution will fix the display, but...

The migration defines both the type of the object within the Rails context, but also the actual database field definition, right? If I want to have very basic data integrity, using not null, defaults (not to mention explicit foreign key constraints) is a "best practice" which I am pretty sure is still in force in the Rails world.

Any other ideas on how I can change the display of my data without changing the migration and database column definitions?

Thanks!!

Tom

Any other ideas on how I can change the display of my data without changing the migration and database column definitions?

you could try overriding the getter in your model:

assuming the field is 'my_number':

def my_number   return nil if self[:my_number].blank? || self[:my_number] == 0   self[:my_number] end