Как передать params [: search] с помощью autocomplete_field_tag? - PullRequest
2 голосов
/ 12 ноября 2011

Я использую Crowdint rails3 jquery autocomplete и у меня проблемы с формой поиска

Вот так выглядит моя 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]

1 Ответ

4 голосов
/ 14 ноября 2011

(Отказ от ответственности: у меня нет опыта работы с этим конкретным камнем, следующий ответ основан на кратком обзоре только его источника.)

Метод 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")
...