为什么我不能从我的模型中显示接下来的三个未来事件?

时间:2013-06-20 21:46:12

标签: ruby ruby-on-rails-3 mongodb mongoid

我试图从我的数据库中显示接下来的三个未来事件,但下面的代码什么也没显示。我无法看到我做错了什么。

这是事件控制器:

class EventsController < ApplicationController
  def show
    @event = Event.where(:slug => params[:slug]).first
    @future_events = Event.where('end_date > ?', Date.today).order('end_date ASC').limit(3)

    General.first.get_blog
    General.first.get_twitter

    if @event.nil?
      @event = Event.first
    end

    @days = [
      { speakers: @event.sessions.day1_speakers, workshops: @event.sessions.day1_workshops },
      { speakers: @event.sessions.day2_speakers, workshops: @event.sessions.day2_workshops }
    ]
  end
end

这是事件视图:

<% @future_events.first(3).each do |e |  %>
  <div class="fourcol aboutColumn">
    <h3><%= e.title %></h3>
    <p><%= e.start_date.strftime("%e %B %Y") %>, <%= e.venue_title %></p>
    <p><%= e.event_description %></p>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:1)

您应该构建查询以仅返回所需的事件:

Event.where('end_date > ?', Date.today).order('end_date ASC').limit(3)

除此之外,我无法理解为什么没有显示任何内容。你能发布整个控制器方法吗?

<强>更新

这是Mongoid的等效查询:

Event.where(:end_date.gt => Date.today).sort(:end_date => 1).limit(3)