On 2006-09-27 13:35:35 +0200, "Jan Svitok" <jan.svitok / gmail.com> said:

> On 9/27/06, Josselin <josselin / wanadoo.fr> wrote:
>> I need to produce this kind of result
>> 
>> l = { "January" => "1"}, {"February => "2"}, { "March" => "3"}, .... }
>> 
>> so I wrote
>> 
>> h  = (Array.new(13) {|i| Hash[Date::MONTHNAMES[i], i.to_s]}).slice(1,12)
>> which results in :
>> [{"January"=>"1"}, {"February"=>"2"}, {"March"=>"3"}, {"April"=>"4"},
>> {"May"=>"5"}, {"June"=>"6"}, {"July"=>"7"}, {"August"=>"8"},
>> {"September"=>"9"}, {"October"=>"10"}, {"November"=>"11"},
>> {"December"=>"12"}]
>> 
>> but I cannot write :         l =  { h }  it's wrong... Hash cannot be
>> converted like that..
>> what should I write instead ?
> 
> What do you want to do exactly? Where the String from the title?
> If you want to have an Array of Hashes, that's what you've got. If you
> want to have
> a Hash of Hashes, then you need to provide another set of keys {x => {
> y=> z}, ...}
> If you want to have just one Hash, then try
> 
> h  = Hash[*(1..12).map {|i| [Date::MONTHNAMES[i], i.to_s]}.flatten)]

thanks.. (as mentionned in a second post I found a solution)
I try to rewrite these 6 lines  into  one line :

      months = []
      1.step(12, 1) do |i|
        l = Date::MONTHNAMES[i]
        m = i.to_s
        months << [ l, m ]
      end

which produces :
[["January", "1"], ["February", "2"], ["March", "3"], ["April", "4"], 
["May", "5"], ["June", "6"], ["July", "7"], ["August", "8"], 
["September", "9"], ["October", "10"], ["November", "11"], ["December", 
"12"]]

I need the array months as a parameter for  'options_to_select()' 
(Rails function)