ruby-on-rails – Ruby on Rails – 将日期时间的哈希转换为日期
发布时间:2020-12-17 03:47:00 所属栏目:百科 来源:网络整理
导读:我正在基于此 Railscast tutorial创建日历视图.在本教程中,:published_on字段是日期字段.我的问题是,如果:published_on是日期时间字段而不是日期字段,我将如何调整下面的代码使其工作? 移民 t.date :published_on 控制器: def index @articles = Article
我正在基于此
Railscast tutorial创建日历视图.在本教程中,:published_on字段是日期字段.我的问题是,如果:published_on是日期时间字段而不是日期字段,我将如何调整下面的代码使其工作?
移民 t.date :published_on 控制器: def index @articles = Article.all @articles_by_date = @articles.group_by(&:published_on) @date = params[:date] ? Date.parse(params[:date]) : Date.today end 视图: <div id="articles"> <h2 id="month"> <%= link_to "<",date: @date.prev_month %> <%= @date.strftime("%B %Y") %> <%= link_to ">",date: @date.next_month %> </h2> <%= calendar @date do |date| %> <%= date.day %> <% if @articles_by_date[date] %> <ul> <% @articles_by_date[date].each do |article| %> <li><%= link_to article.name,article %></li> <% end %> </ul> <% end %> <% end %> </div> 解决方法
我们只需按日期而不是日期时间对文章进行分组:
@articles_by_date = Article.all.group_by {|i| i.created_at.to_date} 删除@articles行,它看起来不像它做任何事情. 这应该是全部. 对于rails 3.x方法,使用ActiveRecord group函数,它将使用DB执行分组,而不是实例化所有记录然后进行分组. @articles_by_date = Article.group("date(created_at)") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |