1

好的,我所拥有的是一个图书馆数据库系统,用户可以在其中在搜索栏中输入书籍,然后当他们点击进入时显示匹配他们搜索的书籍。我想要做的是得到它,这样当用户在搜索栏中键入“a”时,所有记录都将显示在菜单下方的下拉菜单中,并带有字母“a”,然后当他们输入下一个字母“l " 所有带有“al”的记录都会显示在一个下拉列表中,然后是“ali”,以此类推。我对宝石的了解不多,但想学习。他们是我能做到这一点的方法吗?我正在使用 rails 4.0.1 并且现在有一个模糊搜索方法。

4

2 回答 2

1

或者,如果你想自己动手......这是它的要点,可能需要一些调整:

路线.rb

get '/search' => 'search#autocomplete', as: :search_autocomplete

search_controller.rb

def autocomplete
  search_term = params[:search]
  @results = YourModel.where( "your_field LIKE search_term" )
  respond_to do |format|
    format.json @results
  end
end

your_view.html.erb

<%= form_tag( search_autocomplete_path, method: "get" ) do %>
  <%= text_field_tag( :search, params[:search], placeholder: 'Enter a search term...', :id => 'autocomplete_search' ) %>
  <%= submit_tag( "Go" ) %>
  <div id="autocomplete_search_results">
<% end %>

some_coffeescript_file.js.coffee

$( document ).ready ->
  $.ajax '/search',
        type: 'GET'
        parameters: $( "#autocomplete_search" ).val()
        dataType: 'json'
        success: ( data ) ->
            #  here you'll have to append the results to whichever div/container you have in place
            $( '#autocomplete_search_results' ).append "#{ data }"
于 2014-11-07T15:41:17.997 回答
0

查看 Twitter typeahead.js jquery 插件https://github.com/yourabi/twitter-typeahead-rails

于 2014-11-07T15:29:00.387 回答