我正在使用rails cast視頻http://railscasts.com/episodes/240-search-sort-paginate-with-ajax。 我必須使用兩個條件來搜索我的數據庫。在Ruby on Rails的MongoDB中搜索兩個條件
# In my form for search
<%= form_tag products_path, :method => 'get', :id => "products_search" do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil%>
</p>
對於一個條件,這工作得很好:
# In my model product.rb
def self.search(search)
if search
where(name: /#{Regexp.escape(search)}/i)
else
scoped
end
end
# In my controller products_controller.rb
@products = Product.search(params[:search]).page(params[:page]).per(5)
現在我有其他參數來搜索,role
。我在我的產品模型中有角色字段。角色是1,2,3。如果角色被給定,那麼它應該搜索具有給定輸入角色的字符串,否則僅使用名稱進行搜索。
def self.search(search,role)
if search
where(name: /#{Regexp.escape(search)}/i)(and role: should be equal to value of role)
此外,我應該在我的products_controller.rb中進行哪些更改?在我上面的搜索表單中?
「角色」總是存在還是會成爲可選的搜索參數? – jbnunn
在這裏如果存在,那麼它必須在默認情況下搜索角色明智的所有數據... – regmiprem