加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 带日期的Rails路线

发布时间:2020-12-17 03:35:48 所属栏目:百科 来源:网络整理
导读:所以我有一个每周日历视图,我有一条路线设置为接受/:year /:month /:day作为开始日期. match "events/(:year/:month/:day)" = "events#index",:constraints = { :year = /d{4}/,:month = /d{2}/,:day = /d{2}/ },:as = "events_date" 关于这条路线的使
所以我有一个每周日历视图,我有一条路线设置为接受/:year /:month /:day作为开始日期.

match "events/(:year/:month/:day)" => "events#index",:constraints => { :year => /d{4}/,:month => /d{2}/,:day => /d{2}/ },:as => "events_date"

关于这条路线的使用,我有两个问题.首先,在解析params时,这就是我正在做的事情:

unless params[:year].nil? || params[:month].nil? || params[:day].nil?
  start_date = Date.new(params[:year].to_i,params[:month].to_i,params[:day].to_i)
end
start_date = start_date.nil? ? Date.today : start_date

这让我感到非常啰嗦和丑陋.有没有更好的办法?

当在日历中建立另一周的链接时(对于每周一次的寻呼),我是否必须做类似的事情

#assume an date object with the desired start date
link_to events_date_path(date.strftime('%Y'),date.strftime('%m'),date.strftime('%d'))

这也似乎有点冗长和丑陋.在路线中使用日期的最佳方式是什么?

解决方法

我的建议是不要使用三个单独的变量.这样你就不会在控制器中进行大量额外的空检查和健全性检查.你可以把你的比赛变成这样的东西,你的约束仍然是机智的:

match "events/(:date)" => "events#index",:constraints => { :date => /d{4}-d{2}-d{2}/ },:as => "events_date"

因此,您最终会在控制器中获得更多理智:

unless params[:date]
  start_date = params[:date].strftime("%Y-%m-%d').to_date # assuming you want a Date
end

而且我通常做那些类型的’如果这是设置’检查更像这样的东西,因为我觉得它更具可读性:

start_date = Date.today unless defined? start_date

你甚至可以将最后两个组合在一起:

start_date = defined?(params[:date]) ? params[:date].strftime("%Y-%m-%d').to_date : Date.today

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读