Ruby on Rails - 仅显示当前日期

时间:2015-09-10 20:37:09

标签: ruby-on-rails ruby date datetime

我正在创建一个小课程应用程序,每天都有不同的课程。我只想在索引上显示当前的课程,而且无法弄清楚如何。我用Google搜索并发现了一些接近的信息,但仍无法解决问题。我只有一个控制器,DaysController。没有用户控制器。

对于我的模特(day.rb),我已尝试过这个

class Day < ActiveRecord::Base
  validates :description, :date, :link_to, :presence => true
  scope :created_on, lambda {|date| {:conditions => ['created_at >= ? AND created_at <= ?', date.beginning_of_day, date.end_of_day]}}


  def self.today
    self.created_on(Date.today)
  end

end

对于我的索引,我已尝试过这些

  <% @day.created_on(Date.today) %>

  <% @day.today %>

任何建议??

3 个答案:

答案 0 :(得分:1)

我会将scope更改为仅使用Date对象,并假设您希望条件使用较新的语法:

scope :created_on, ->(date) { where(created_at: date) }

然后Day.today方法应该没有任何变化。

答案 1 :(得分:1)

您可以执行以下操作:

class Day < ActiveRecord::Base
  scope :today, lambda { where('CAST(created_at AS date) = ?', Date.today) }

并像这样使用它:

@days = Day.today
# returns a list of `Day` records where the `created_at`'s date is equal to today's date

答案 2 :(得分:1)

如果我理解正确并且为了简单起见,这基本上就是你想要实现的目标吗?

控制器:

def index
 @days = Day.all
end

查看(index.html.erb):

<% @days.each do |day| %>
<% if day.created_at == Date.today %>
 <%= day.field_name %>
<% end %>