我遇到了軌道中的示波器問題。目前我在索引控制器中有一個case語句,它導致應用程序要麼過濾1個類別或另一個類別。 但我需要能夠一次過濾多件事。基本上,鏈接範圍是這樣,當用戶點擊鏈接A時,範圍A被應用,然後當他們點擊鏈接B時,範圍B被添加到範圍A之上以進行更多的過濾。最終,我想在視圖中添加一個複選框,以便在檢查範圍應用時以及未選中時刪除範圍。使用示波器過濾導軌中的結果5
我有一堆條件邏輯(if \ else)語句,我現在使用,因爲我不僅需要過濾說「經驗」,我需要篩選4種不同的體驗選項(0 - 2年,2 - 5年,5 - 10年等)。這對所有示波器都是一樣的。
因此,總括而言,我需要找到一種鏈接範圍的方法,以便過濾器不斷得到應用(過濾器A +過濾器B +過濾器C等等),而不是讓它們像現在這樣過濾器A或過濾器B,但無法讓它們一起工作以進一步縮小結果範圍。
這裏是我的範圍
scope :by_experience, -> (ex) { where(experience: ex) }
scope :by_num_days_past, -> (days_past) { where('created_at >= ?', days_past.days.ago) }
這裏是我的看法
<!-- toggle for experience -->
<a class="" role="" data-toggle="collapse"
href="#experience-collapse" aria-expanded="false" aria-
controls="experience-collapse">
Experience<br />
</a>
<div class="collapse" id="experience-collapse">
<div class="well">
<%= link_to "0-2 years", filtered_jobs_path(:experience, '0-2 years') %><br />
<%= link_to "2-5 years", filtered_jobs_path(:experience, '2-5 years') %><br />
<%= link_to "5-10 years", filtered_jobs_path(:experience, '5-10 years') %><br />
<%= link_to "10+ years", filtered_jobs_path(:experience, '10+ years') %>
</div>
</div>
<br />
<!-- toggle for num_days_past -->
<a class="" role="" data-toggle="collapse" href="#num-days-
past-collapse" aria-expanded="false" aria-controls="num-days-past-
collapse">
Days Listed<br />
</a>
<div class="collapse" id="num-days-past-collapse">
<div class="well">
<%= link_to "7 days", filtered_jobs_path(:num_days_past, '7') %><br />
<%= link_to "30 days", filtered_jobs_path(:num_days_past, '30') %><br />
<%= link_to "60 days", filtered_jobs_path(:num_days_past, '60') %><br />
</div>
</div>
<br />
這裏是我的控制器的索引操作,我認爲需要改變發生,以便一次應用多個範圍。
def index
case params[:scope]
when "num_days_past"
if (params[:format] == "7")
@jobs = Job.by_num_days_past("7").paginate(page: params[:page], per_page: 5)
elsif (params[:format] == "30")
@jobs = Job.by_num_days_past("30").paginate(page: params[:page], per_page: 5)
elsif (params[:format] == "60")
@jobs = Job.by_num_days_past("60").paginate(page: params[:page], per_page: 5)
else
@jobs = Job.order('created_at DESC').paginate(page: params[:page], per_page: 5)
end
end