我不知道该怎么做。我目前正在使用:
<% @events.each do |event| %>
<li><%= link_to event.group.name, event %>
<%= event.start_time %>
<% end %>
显然,这是渲染每个事件。我今天可以为JUST提供某种陈述吗?
上面的代码在视图中。从控制器渲染事件是一个更好的主意吗?或者在视图中是否很好?
编辑: 哇,谢谢你所有的帮助!但是,请耐心等待我,因为我是铁杆新秀。所以我把控制器改成了这个(基于@Triveni Badgujar的回答:
def home
@resources = Resource.all
@events = Event.where('DATE(created_at)= ?', Date.today)
@homeworks = Homework.all
end
但是,此代码对我的home.html.erb视图页面没有影响。它仍然显示所有事件而不是今天的事件。 再次感谢!
答案 0 :(得分:2)
@events = Event.where('DATE_FORMAT(created_at, "%Y-%m-%d")= ?', Date.today)
答案 1 :(得分:1)
您应该在视图中呈现您的事件,但您应该在控制器中过滤它们。所以你的问题实际上是关于控制器代码的问题。你应该做的是调用事件的范围。像这样:
@events = Event.where('start_time > ?', Time.now.beginning_of_day)
答案 2 :(得分:1)
在控制器中你可以写
@events = Event.where('DATE(created_at)= ?', Date.today)
答案 3 :(得分:1)
如果你想要今天所有start_time
的活动,你可以使用:
@events = Event.where('start_time >= ?', Time.now.beginning_of_day)
或者,如果您想要今天创建的所有事件,您可以使用:
@events = Event.where(:created_at => Date.today)
答案 4 :(得分:0)
您可以在活动模型中添加范围,以获取今天的所有活动:
scope :todays_event, where('start_time=?', Time.now.beginning_of_day)
<% @events.todays_event.each do |event| %>
<li><%= link_to event.group.name, event %>
<%= event.start_time %>
<% end %>
答案 5 :(得分:0)
你真的想要上述答案的组合:
在事件模型中创建范围。您的范围可能还要检查它是否也在当天结束之前
scope :todays_events, where('start_time >=? AND start_time <= ?', Time.now.beginning_of_day, Time.now.end_of_day)
在控制器中使用该范围
@events = Event.todays_events
答案 6 :(得分:0)
你也可以这样做:
current_time = Time.now
@events = Event.where(start_time: current_time.beginning_of_day..current_time.end_of_day)
它将获取今天乞讨和结束时间之间的所有事件。
可能会在Event
模型类中创建一个范围,以使其成为DRY:
scope :happening_on, ->(date_time) { where(start_time: date_time.beginning_of_day..date_time.end_of_day) }
这使您可以检查在任何一天发生的事件:
@events = Event.happening_on(Time.now) # todays events
@events = Event.happening_on(1.day.ago) # yesterdays events
@events = Event.happening_on(1.day.from_now) # tomorrows events