2011-11-12 30 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