如何从 Rails 中的 date_select 或 select_date 获取日期? [英] How to get a Date from date_select or select_date in Rails?
问题描述
使用 select_date
返回一个 params[:my_date]
和 year
、month
和 天
属性.如何轻松获取 Date 对象?我希望像 params[:my_date].to_date
之类的东西.
Using select_date
gives me back a params[:my_date]
with year
, month
and day
attributes. How do get a Date object easily? I'm hoping for something like params[:my_date].to_date
.
我也很高兴使用 date_select
代替.
I'm happy to use date_select
instead as well.
推荐答案
使用 date_select 可以分别为您提供 3 个单独的键/值对,分别用于日、月和年.因此,您可以将它们作为参数传递给 Date.new
以创建新的 Date 对象.
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.
示例 date_select 返回 Event
模型的参数:
An example date_select returned params for an Event
model:
"event"=>
{"name"=>"Birthday",
"date(1i)"=>"2012",
"date(2i)"=>"11",
"date(3i)"=>"28"},
然后创建新的Date
对象:
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
然后将其称为 date = Date.new *flatten_date_array params[:event]
.但这不是真正属于控制器的逻辑,因此您可能决定将其移至其他地方.您甚至可以将其扩展到 Date
类,并将其称为 date = Date.new_from_hash params[:event]
.
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]
.
这篇关于如何从 Rails 中的 date_select 或 select_date 获取日期?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!