簡體   English   中英

使用Ruby on Rails設置過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM