我正在使用 rails cast 视频http://railscasts.com/episodes/240-search-sort-paginate-with-ajax。我必须使用两个条件在我的数据库中进行搜索。
# 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 中做哪些更改?在我上面的搜索表单中?