#ruby-on-rails #ruby #ruby-on-rails-3
#ruby-on-rails #ruby #ruby-on-rails-3
Вопрос:
Я использовал date_select
для создания страницы с тремя полями для создания даты, и поэтому мой сеанс заканчивается следующими полями:
{"CompanyUk"=>{"company_number"=>"12345",
"incorporation_date(1i)"=>"2011",
"incorporation_date(2i)"=>"5",
"incorporation_date(3i)"=>"27"}}
Какой хороший способ восстановить дату из трех отдельных полей? Очевидно, я могу извлекать их по одному и собирать заново, но это кажется большим количеством дополнительного кода по сравнению с тем, что было бы возможно.
Ответ №1:
((1..3).map { |i| session['CompanyUk']["incorporation_date(#{i}i)"] } * '/').to_date
Комментарии:
1. Хорошо, спасибо, это не слишком болезненно. Я надеялся, что будет вспомогательная функция.
Ответ №2:
У меня было:
datemap = params["CompanyUk"].select {|k,v| k.start_with? "incorporation_date"}
inc_date = Date.new(*(datemap.values.map {|x| x.to_i}))
Что является более сложным, чем решение Мори.
Альтернативно, на основе решения Мори, но без конкатенации строк:
Date.new *((1..3).map { |i| params['CompanyUk']["incorporation_date(#{i}i)"].to_i })