2013-10-03 41 views
0

我正在製作旅遊度假應用程序。搜索地點是基於選擇下拉菜單中的類別。使用選擇下拉列逐行篩選列表

但我無法理解程序邏輯。我能夠加載數據庫中的內容。但不能根據某些類別進行過濾。 我做了一個名爲的腳手架,列出了幷包含了一些參數。 在數據庫中有5列,即,地方描述IMAGE_URL價格類別的排。

現在,如果我創建另一個控制器,搜索,我不能根據選擇下拉列表中的類別加載一行。

Search_controller.rb

def index 
    @categories = Listing.find_by_sql("SELECT category FROM listings GROUP BY category").map &:category 
    @list = params[:category].blank? ? Listing.all : Listing.find_all_by_category(params[:category]) 
    end 

index.html.erb

<% form_tag(:action => :index) do %> 
    <%= select_tag "category", options_for_select(@categories) %> 
    <%= submit_tag "Filter" %> 
<% end %> 

<table> 
    <% @list.each do |list| %> 
    <tr> 
     <td><%= list.place %></td> 
    </tr> 
    <% end %> 
</table> 

它不顯示的選擇選項。

而且,我試圖做到這一點,而不選擇形式

Search_controller.rb

def index 
    @list = Listing.select(:category).map(&:category).uniq 
end 

Index.html.erb

<% @list.each do |r| %> 
<%= r.place %> 
<% end %> 

它說:未定義方法「放置」爲「晴天」:字符串(其中「sunny」是一個類別)

基本上,您如何根據某個列值得到該行。而且,邏輯是否也適用於兩個選擇下拉菜單?

我知道我很接近,但有些事情不對。請幫助我。

非常感謝。

回答

0

你在= form_tag之前失蹤。應該是:

<%= form_tag(:action => :index) do %> 
    <%= select_tag "category", options_for_select(@categories) %> 
    <%= submit_tag "Filter" %> 
<% end %> 
+0

嘿謝謝你糾正錯字。但我猜這是行不通的。擊中過濾器說沒有路線匹配SEARCH - > INDEX。我認爲選擇標籤必須被處理。如何做到這一點。 – curiousCoder