ruby-on-rails - Ruby on Rails - 将日期时间的哈希值转换为日期

标签 ruby-on-rails ruby ruby-on-rails-3 date datetime

我正在基于此 Railscast tutorial 创建一个日历 View .在本教程中,:published_on 字段是一个日期字段。我的问题是,如果 :published_on 是日期时间字段而不是日期字段,我将如何调整下面的代码以使其工作?

迁移

t.date :published_on

Controller :

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 行,它看起来没有任何作用。

应该就这些了。<​​/p>

对于 Rails 3.x + 方法,使用 ActiveRecord group函数,它将使用数据库执行分组,而不是实例化所有记录然后分组。

@articles_by_date = Article.group("date(created_at)")

关于ruby-on-rails - Ruby on Rails - 将日期时间的哈希值转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969620/

相关文章:

ruby-on-rails - 没有端口号的 Rails 应用程序

ruby-on-rails - 回形针。处理具有相同文件名的文件

ruby - 如何使用 gsub 替换 ruby​​ 中的多字节字符?

ruby-on-rails - Rails 如何检测日期是否连续?

ruby-on-rails - find_by_sql 不返回额外的属性

ruby-on-rails - Ruby on Rails - Carrierwave 获取图像尺寸宽度和高度

ruby-on-rails - ruby 1.9.2 不支持 pg gem?不能 heroku rake db :migrate (

ruby - 跳过扩展名为 pdf、zip 的网页,从 Anemone 中爬行

javascript - Nested_form_fields 在验证失败时显示现有的 has_many 嵌套字段

ruby-on-rails - Delayed_job没有发送Rails 3电子邮件