2011-11-12 31 views
2

我正在使用Crowdint rails3 jquery autocomplete,并且遇到搜索表单有问题。如何通过autocomplete_field_tag传递params [:search]?

这是我search表单外观没有自动完成:

<%= form_tag search_path, :method => 'get' do %> 
    <%= text_field_tag :search, params[:search], :placeholder => "Search for a Product.....", :id => "main-search-field" %> 
    <%= submit_tag "Search", :name => nil, :id => "main-search-field-button" %> 
<%end%> 

现在,当我周围的形式自动完成和搜索改变:

<%= form_tag search_path, :method => 'get' do %> 
    <%= autocomplete_field_tag 'name','', search_autocomplete_product_name_path, params[:search], :placeholder => "Search for a Product.....", :id => "main-search-field" %> 
    <%= submit_tag "Search", :name => nil, :id => "main-search-field-button" %> 
<%end%> 

这是行不通的,如果我有params[:search]内我的autocomplete_field_tag

ActionView::Template::Error (wrong number of arguments (5 for 4)) 

如何设置搜索参数,以便实际使用自动完成功能进行搜索?


更多信息:

class SearchController < ApplicationController 
    autocomplete :product, :name, :full => true 

    # Sunspot search. 
    def index 
    @search = Product.search do 
     fulltext params[:search] 
     paginate(:per_page => 1, :page => params[:page]) 
    end 
    @products = @search.results 
    end 
end 

# routes.rb 
get 'search/autocomplete_product_name' 
resources :search, :only => [:index] 

回答

4

(声明:我已经与这个特殊的宝石没有经验,下面的答案是基于一个简单的介绍一下通过它仅是源)

autocomplete_field_tag方法根据来源需要五个参数,最后一个是选项哈希:

autocomplete_field_tag(name, value, source, options = {}) 

所以,考虑到你的控制器方法,例如需要一个所谓的参数product_name你的方法调用或许应该阅读:

autocomplete_field_tag('product_name', '', search_autocomplete_product_name_path, :placeholder => "Search for a Product.....", :id => "main-search-field") 
+0

这得到自动完成工作,同时与我上面的代码,但怎么样传递:搜索参数?它不会让我搜索,如果我没有他们我相信。我将发布我通常用于此的代码,以便搜索工作。 – LearningRoR

+0

这个参数包含什么?你在哪里设置它? – polarblau

+0

在我的编辑是我的控制器,视图和路线。我正在使用太阳黑子,正如你可以在块中看到的那样,为了进行全文搜索,我在里面传递了'params [:search]'。 – LearningRoR