Josselin
9/27/2006 12:46:00 PM
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)