我有一个事件模型,它有两个命名作用域:
class Event < ActiveRecord::Base
scope :future, lambda { where('events.date >= ?', Time.zone.now) }
scope :past, lambda { where('events.date <= ?', Time.zone.now) }
end
我的控制器:
class EventsController < InheritedResources::Base
actions :index, :show, :future, :past
has_scope :future
has_scope :past
def future
index! { @events = Event.future }
end
def past
index! { @events = Event.past }
end
end
我也有这些额外行动的观点和路线。
这个很好用。我的应用程序执行我想要的操作,我可以链接到侧边栏中的新操作,如下所示:
%li
= link_to 'Events Home', events_path
%li
= link_to 'Future Events', future_events_path
%li
= link_to 'Past Events' past_events_path
如果我能去掉“未来”和“过去”的控制器操作,从视图中调用作用域就好了,如下所示:
%li
= link_to 'Events Home', events_path
%li
= link_to 'Future Events', events_path.future
%li
= link_to 'Past Events' events_path.past
显然那不管用。我见过
an example
它使用了一个自定义的select\u标记助手,但我可以修改它,使其在没有select标记或JS的情况下工作。。。
还是坚持现在的方法好