我有兩個命名範圍的事件模型:我可以將命名的作用域附加到Rails中的鏈接嗎?
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_tag幫手,但我很能修改它以無選擇標記或JS工作...
是更好地與當前的方法堅持
非常感謝,完美的作品 - 它真的有幫助! – stephenmurdoch 2010-09-08 07:44:19
您是否仍然可以在索引操作中使用導軌4或5來執行此操作? – 2016-11-01 23:48:05