[英]Setting up filters with Ruby on Rails
我正在嘗試做一些事情,我認為這應該很簡單,但是卻找不到正確的答案。 在下面的視圖中,我希望能夠從以下工程學科之一中進行選擇,單擊“ Filter
按鈕。 重新加載頁面時,視圖中的循環只會添加屬於指定過濾器的標記,或者在未應用過濾器的情況下,標記將全部顯示。
我以前從未在Rails中進行過任何過濾,因此,我完全迷失了。 我還覺得我需要更改我的route.rb文件以適應過濾器可能導致的額外路由。
調節器
class DynamicPagesController < ApplicationController
def map
@fields = ['Software Engineering',
'Mechanical Engineering',
'Electrical Engineering',
'Aerospace Engineering',
'Civil Engineering',
'Chemical Engineering',
'Architectural Engineering']
end
end
視圖
<%= select(:primary_field, :id, @fields) %>
<%= button_to "Filter", map_path, :method => :get, class: "btn btn-primary" %>
...
for (var i = 0; i < companies.length; i++){
markers.addLayer(new L.Marker([companies[i].latitude, companies[i].longitude]).bindPopup(companies[i].popup, { maxHeight:150 }).openPopup());
}
在您的控制器中,您可以檢查是否存在過濾器參數,並根據值進行過濾:
if params[:filter].present?
# This will apply the filter
Model.where(attribute: params[:filter])
else
# This will return all records
Model.all
end
而且由於您有一個標准選擇(當未選擇任何選項時),它將返回所有記錄。 如果默認情況下未顯示空白選項,則可以通過在您的選擇字段中添加allow_blank: true
來強制執行該選項:
select(:primary_field, :id, @fields, allow_blank: true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.