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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |