如何从 Rails 中的 date_select 或 select_date 获取日期? [英] How to get a Date from date_select or select_date in Rails?

查看:29
本文介绍了如何从 Rails 中的 date_select 或 select_date 获取日期?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 select_date 返回一个 params[:my_date]yearmonth 属性.如何轻松获取 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆