Ruby on rails 3 需要使用>;=finder方法的帮助比较轨道3

Ruby on rails 3 需要使用>;=finder方法的帮助比较轨道3,ruby-on-rails-3,Ruby On Rails 3,我有一个应用程序,列出了乐队在主页上无序列表显示 <ul> <% for show in @shows %> <li> <strong><%= link_to show.venue, show %></strong><br /> <%= display_date(show.show_date) %> </li> <% end %> </

我有一个应用程序,列出了乐队在主页上无序列表显示

<ul>
 <% for show in @shows %>
   <li>
     <strong><%= link_to show.venue, show %></strong><br />
     <%= display_date(show.show_date) %>
   </li>
 <% end %>
</ul>

有一个shows控制器,负责创建节目。它在数据库中有行,如地点、显示日期、显示时间等。应用程序的主页来自页面控制器。pages控制器有两个创建主页和关于页面的操作

class PagesController < ApplicationController 
  def home
    @shows = Show.find(:all, :order => :show_date)
  end

  def about
  end
end
class PagesController:Show\u date)
结束
关于
结束
结束
我遇到的问题是,我只希望show_date大于或等于date.today的节目填充到@shows实例变量中,该变量将依次填充到无序列表中。任何帮助编写自定义查找器方法都将不胜感激。使用助手方法过滤@shows变量会更容易吗?

您可以试试这个

Show.all(:order => 'show_date desc')
或者在Rails 3中

Show.order('show_date desc').all

下面介绍如何过滤日期(这使用Rails3较新的
where(…)
语法,而不是
find(:all…

此外,在
Show
模型中,您可以添加一个命名范围,以便在其他地方重用它:

class Show < ActiveRecord::Base
  scope :upcoming, lambda { where("show_date >= ?", Date.today).order(:show_date) }
end

记录的排序工作正常,我想删除日期早于今天的节目,这样它就不会在无序列表中列出它们。我不想从数据库中删除它们,只是不想列出它们。没问题,乔尔,无论如何谢谢你的回答!迪伦给出了上面完美的答案。这正是我所需要的,而且效果很好!范围是天才!谢谢,迪伦
class Show < ActiveRecord::Base
  scope :upcoming, lambda { where("show_date >= ?", Date.today).order(:show_date) }
end
@shows = Show.upcoming