2017-03-21 50 views
1

On Activeadmin我有一个events_date表。在仪表板上,我试图只显示即将到来的活动日期。我无法弄清楚如何做到这一点。这是我到目前为止的代码:在activeadmin仪表板上,试图仅显示未来的事件

 column do 
     panel "Upcoming Events" do 
     table_for EventDate.order("event_date asc").limit(20), sortable: true do 
      column :event_date 

      column "Event Name" do |event_date| 
        event_date.event_location.event.name 
        end 
      column "Agency Id" do |event_date| 
        event_date.event_location.event.agency_id 
        end    
      end 
     end 
     end 
    end 

正如你所想,这给了我所有的事件日期。我怎样才能让它只显示我今后的日期?

+0

该代码看起来没问题。我不确定我以前看过一个嵌套在列中的面板,但我不认为这是一个问题。它呈现多少条记录是20多个? –

+0

是的,代码的作品,并给我所有的事件。但是,我只想要展示未来的事件。所以如果活动日期是昨天或过去,我不希望它显示。 –

回答

1

您可以使用arel_table获取大于或等于Time.zone.now的查询。

class EventDate > ActiveRecord::Base 
    scope :future, -> { where(arel_table[:event_date].gteq(Time.zone.now)) } 
    # another way of doing it 
    scope :future, -> { where("event_date >= ?", Time.zone.now) } 
end 

# active admin 

table_for EventDate.future.limit(20), sortable: true do 
    column :event_date 

    column "Event Name" do |event_date| 
    event_date.event_location.event.name 
    end 

    column "Agency Id" do |event_date| 
    event_date.event_location.event.agency_id 
    end    
end 


# Should give this query 
EventDate Load (0.7ms) SELECT "event_dates".* FROM "event_dates" WHERE "event_dates"."event_date" >= '2017-03-22 13:39:38.427240' 
+0

不确定希望实现该代码。我把它放在ActiveAdmin.register_page“仪表板”下,然后做 但是我似乎无法让它工作。 –

+0

范围:未来应该在EventDate模型中。 –

相关问题