Forum: Ruby on Rails String weirdness

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D4b246038154d7cc2363256bd25a4fe0?d=identicon&s=25 ljw1001 (Guest)
on 2005-11-12 12:50
(Received via mailing list)
I'm a newbie so please have pity if the answer is obvioius ;-)

I wrote a date formatter. It works as expected in irb, but if i try to
use
it to format a date for display as the value of an input (type=text)
field,
it truncates unexpectedly.

This is the formatter:

def format_date_short_us(date)
month_hash = Hash[1 =>'Jan', 2 => 'Feb', 3=>,...etc... 12 => 'Dec']
"#{month_hash[adate.month]} #{adate.day}, #{adate.year}"
end

Within IRB, passing in Date.today returns:
=> "Nov 11, 2005"

The html result using Date.today is:
"Nov"

This is the invocation from html:

<input type="text"
name="st_date"
id="f_date_c"
value=<%= format_date_short_us(@project.st_date) %> />

Any help is greatly appreciated. thanks.
Ac2be938319175ab6e69e24b2b4b5a95?d=identicon&s=25 morg (Guest)
on 2005-11-12 12:50
(Received via mailing list)
<input type="text"
          name="st_date"
          id="f_date_c"
          value="<%= format_date_short_us(@project.st_date) %>" />

note the quotes around the value
39b36b2be47228f8619d61ea7a607a25?d=identicon&s=25 mixonic (Guest)
on 2005-11-12 12:50
(Received via mailing list)
Hi newbie,

I have a helper that is doing the same thing.  Firstly, your value=
attribute doesn't have "" around the actual value data (the date).

btw, I'd make sure you have an object that can understand date methods
before throwing them around, if you gave a string to your function it
wouldn't act very happy.  And you might want to use
Date::ABBR_MONTHNAMES, which already has the abbreviations, and will not
need to be instantiated every time you use that method.

-Matt B

  def d(unformatted)
    if (unformatted.kind_of?(Date) || unformatted.kind_of?(Time))
      "#{Date::ABBR_MONTHNAMES[unformatted.mon]} #{unformatted.mday},
#{unformatted.year}"
    end
  end
6993d6b4b6d882f421e1b45ac147f3e0?d=identicon&s=25 scott (Guest)
on 2005-11-12 12:50
(Received via mailing list)
On Nov 11, 2005, at 8:32 AM, Larry White wrote:

> 'Dec']
>          "#{month_hash[adate.month]} #{adate.day}, #{adate.year}"
>  end

It looks to me like you're using Date/Time objects.  If so, just do:

date.strftime('%b %d, %Y')
This topic is locked and can not be replied to.