2016-01-07 65 views
1

我对轨道相当陌生,并且只是为了编写一些轨道而建立网上商店。我现在正在实施一个简单的搜索功能,并得到一些我无法解释的奇怪行为。Rails - 简单的搜索功能

型号方法:

def self.search(query) 
    where("title like ?", "%#{query}%") 
end 

控制器梅索德:

def index 
    if params[:search] 
    @products = Product.search(params[:search]) 
    else 
    @products = [] 
    #Only lists available products (in cart counts as available) 
    @available_items = Item.where(user_id: nil).select(:product_id).uniq 
    @available_items.each do |item| 
     @products << item.product 
    end 
    end 
end 

搜索表单:

<%= form_tag(products_path, :method => "get", id: "search-form", enforce_utf8: false) do %> 
    <%= text_field :search, params[:search], placeholder: "Search..." %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %> 

当我触发搜索我没有得到任何结果和网址如下:

http://localhost:3000/products?search%5B%5D=Paper

当我删除从URL '%5B%5D' 这一切工作正常,我得到我的结果。 '%5B%5D'代表URI编码中的'[]',但不能确定它来自哪里。任何帮助将不胜感激!

最佳, 保罗

回答

2

reference如何text_fieldreferencetext_field_tag帮手工作原理:

<%= text_field :search, params[:search], placeholder: "Search..." %> 

它会给你搜索输入字段name=search[],这就是为什么它的消逝search[]='text'

<input type="text" name="search[]" placeholder="Search..." /> 

使用text_field_tag代替:

<%= text_field_tag :search, params[:search], placeholder: "Search..." %> 
+1

喔哇。非常感谢! –