我編輯了我的第一個代碼,現在它更好,更清潔感謝@FunTimeFreddie,但它尚未妥善解決的問題。我會盡快回復正確的答案。通過category_id搜索項目與select_tag在軌道下拉
在搜索表單我需要過濾所有的菜單項: 1.每 類別2.每個類別和搜索「查詢」每分鐘價格& & 3. ||最大價格 ...等等,以及所有可能的組合
我已經設法使用「查詢」,min_price和max_price在搜索表單中搜索所有菜單項。我無法設置所選類別的結果列表,我做錯了什麼?
這是我的模型(編輯):
class Menuitem < ActiveRecord::Base
belongs_to :menu_category
include Filterable
scope :newest_first, lambda { order('menuitems.created_at DESC') }
scope :last_one, lambda { order('menuitems.created_at ASC').last }
scope :search_keyword, lambda { |query|
where(["title LIKE ? or body LIKE ?", "%#{query}%", "%#{query}%"]) if query != ""
}
scope :menu_category_id, lambda { |menu_category_id|
where("menu_category_id = ?", menu_category_id) if menu_category_id != ""
}
scope :min_price, lambda { |price|
where("price > ?", price) if price != ""
}
scope :max_price, lambda { |price|
where("price < ?", price) if price != ""
}
end
這是我的控制器(編輯):
class MenuitemsController < ApplicationController
def index
@menuitems = Menuitem.newest_first.filter(params.slice(:menu_category_id, :search_keyword, :min_price, :max_price))
end
這是我的看法:
<%= simple_form_for :menuitem, :method => 'get', :url => {:action => 'index'} do |f| %>
<p>
<%= f.select :menu_category_id, options_for_select(@menucategories.map {|s| [s.title, s.id]}, params[:menu_category_id]), :selected => params[:menu_category_id], :onchange => "this.form.submit();", prompt: "Select category" %>
</p>
<p>
<%= f.input :search_keyword, input_html: { name: 'search_keyword', :value => params[:search_keyword]}, label: 'search recipe title', :required => false %>
<%= f.input :min_price, input_html: { name: 'min_price', :value => params[:min_price]}, label: 'min price:', :required => false %>
<%= f.input :max_price, input_html: { name: 'max_price', :value => params[:max_price]}, label: 'max price:', :required => false %>
<%= f.button :submit, "search" %>
</p>
<% end %>
作爲調試方法,用虛擬的文字,如[「弗雷德」,「威爾瑪」,「巴尼」的陣列替換模型在SELECT語句中, 「貝蒂」。如果這樣做的話,你的模型沒有返回一個文本數組就有問題。如果它不起作用,你的f.select被打破,需要工作,直到虛擬數組工作。像@FunTimeFreddies這樣的最新答案就是識別有用答案的方法。 –
這是一個很好的建議@Matt史蒂文斯,我會嘗試一下。我已經看到該網址顯示該查詢,所以我調查它應該是在我的控制器或模型中的錯誤。關於滴答,你絕對是對的,但我不能沒有,因爲我沒有足夠的聲譽。 :(對不起 – user2092653