2017-05-12 23 views
0

私は自分のレールアプリケーションの検索フォームに取り組んでいます。ここで私は今持っているものです。レールで検索結果を動的に表示する方法

マイビュー:

<%= form_tag search_suggestions_path, method: 'get', id: 'all-games-search' do %> 
    <%= text_field_tag :games_search, (params[:games_search].present? ? params[:games_search] : nil), 
            class: 'search-input', placeholder: 'Search games...', autocomplete: 'off' %> 
    <ul id="results"></ul> 
    <%= button_tag name: nil, class: 'submit-button' %> 
<% end %> 

コントローラー:

def search_suggestions 
    query = params[:games_search] 
    results = if query.present? 
       response = [] 
       Game.where('title ILIKE ?', query.to_s).each do |game| 
        obj = {id: game.id, title: "#{query}"} 
        response << obj 
       end 
       response 
       else 
       [] 
       end 
    render json: results 
    end 

そしてJS:

$('#games_search').bind('change input paste', function() { 
    var val = $(this).val(); 
    $.get('/search_suggestions?games_search=' + val, function (data) { 
     $('#results').empty().show(); 
     $.each(data, function(index, results) { 
     $('#results').append('<li>' + results.title + '</li>').click(function() { 
      location.href = '/games/' + results.id; 
     }); 
     }); 
    }); 
    }); 

のThコード作品ですが、ゲーム全体のタイトルを入力するだけで結果が得られます。私が必要とするのは、ゲームのタイトルの最初の数個のシンボルが検索入力に入力されたときに、検索結果を表示することです。先にありがとう。

+0

http://stackoverflow.com/questions/29345690/how-to-use-like-clause-query-in-rails – Iceman

+1

ええ、ありがとう、ちょうど補間で%%を逃しました。 –

答えて

-1

こんにちは@Alexここで失敗した試みがいくつかあります。彼らはすべて、Railsの方法を使用しようとしましたが、成功しませんでした。 hereおよびhereを参照してください。

しかし、これを簡単に行うことができる宝石(mezis/fuzzily)があります。

Game.find_by_fuzzy_name('Mortal Kombat', :limit => 10) 

この宝石を使用すると、ActiveRecordオブジェクトをファジー検索できます。

+1

@ Jones Agyemangさん、ありがとうございます。しかし、 "#{query}"の代わりに "%#{query}%"を実行すると問題が解決しました。 –

関連する問題