How to get a Date from date_select or select_date in Rails?
Using date_select gives you 3 separate key/value pairs for the day, month, and year respectively. So you can pass them into Date.new
as parameters to create a new Date object.
An example date_select returned params for an Event
model:
"event"=> {"name"=>"Birthday", "date(1i)"=>"2012", "date(2i)"=>"11", "date(3i)"=>"28"},
Then to create the new Date
object:
event = params[:event]date = Date.new event["date(1i)"].to_i, event["date(2i)"].to_i, event["date(3i)"].to_i
You may instead decide to wrap this logic in a method:
def flatten_date_array hash %w(1 2 3).map { |e| hash["date(#{e}i)"].to_i }end
And then call it as date = Date.new *flatten_date_array params[:event]
. But this is not logic that truly belongs in a controller, so you may decide to move it elsewhere. You could even extend this onto the Date
class, and call it as date = Date.new_from_hash params[:event]
.
Here is another one:
# view<%= date_select('event', 'date') %># controllerdate = Date.civil(*params[:event].sort.map(&:last).map(&:to_i))
Found at http://kevinlochner.com/use-rails-dateselect-without-an-activerecord
Here is the another one
Date.civil(params[:event]["date(1i)"].to_i,params[:event]["date(2i)"].to_i,params[:event]["date(3i)"].to_i)