首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Rails中从date_select或select_date获取日期?

如何在Rails中从date_select或select_date获取日期?
EN

Stack Overflow用户
提问于 2012-11-28 20:57:43
回答 6查看 35.6K关注 0票数 27

使用select_date返回一个具有yearmonthday属性的params[:my_date]。如何轻松获取Date对象?我希望是像params[:my_date].to_date这样的东西。

我也很乐意使用date_select

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-28 22:08:54

使用date_select可以分别为日、月和年提供3个单独的键/值对。因此,您可以将它们作为参数传递到Date.new中,以创建新的Date对象。

Event模型返回参数的示例date_select:

代码语言:javascript
复制
"event"=>
 {"name"=>"Birthday",
  "date(1i)"=>"2012",
  "date(2i)"=>"11",
  "date(3i)"=>"28"},

然后创建新的Date对象:

代码语言:javascript
复制
event = params[:event]
date = Date.new event["date(1i)"].to_i, event["date(2i)"].to_i, event["date(3i)"].to_i

相反,您可能决定将此逻辑包装在一个方法中:

代码语言:javascript
复制
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]

票数 47
EN

Stack Overflow用户

发布于 2013-12-21 04:14:54

这是另一个:

代码语言:javascript
复制
# view
<%= date_select('event', 'date') %>

# controller
date = Date.civil(*params[:event].sort.map(&:last).map(&:to_i))

可在http://kevinlochner.com/use-rails-dateselect-without-an-activerecord找到

票数 13
EN

Stack Overflow用户

发布于 2014-07-02 01:02:48

这是另一个

代码语言:javascript
复制
Date.civil(params[:event]["date(1i)"].to_i,params[:event]["date(2i)"].to_i,params[:event]["date(3i)"].to_i)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13605598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档