Rails 4:渲染今天的活动

时间:2015-05-28 08:29:05

标签: ruby-on-rails ruby ruby-on-rails-4

我不知道该怎么做。我目前正在使用:

    <% @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视图页面没有影响。它仍然显示所有事件而不是今天的事件。 再次感谢!

7 个答案:

答案 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