下記コードを簡単に説明すると、formに検索文字を入れるとAjaxが働き、部分一致で入力した文字列に当てはまるフィールドを取ってきて
ビューで表示するというものです。
しかし全角スペースや半角スぺースにも反応してしまい、そうするとDBに入っている値を全て取ってきて表示されてしまいます。
<input type=form id="tag_form" class="w-50 p-2"placeholder="文字入力してください"/> <ul id="results" class="my-3"> </ul>
$(function(){ $(document).on('keyup','#tag_form', function(e){ e.preventDefault(); var input = $.trim($(this).val()); $.ajax({ url: '/search_tag', type: 'GET', data: ('keyword=' + input), processData: false, contentType: false, dataType: 'json' }) .done(function(data){ $('#results').find('.tags_btn').remove(); $(data).each(function(i, genres){ $('#results').append('<div class="tags_btn btn btn-danger mx-1" id=' + genres.id + '>' + genres.tagname + '</div>'); }); appendTag(); }); }); deleteTag(); });
#controller def search_tag @tag = Tag.where('tagname LIKE(?)', "%#{params[:keyword]}%") render json: @tag end
.where('tagname LIKE(?)', "%#{params[:keyword]}%")
のあいまい検索でスペースやバックスペースを入力したときに空白文字で検索されてしまっているのが原因であると思っているのですが、
どのように空白文字を対策すればベターなのでしょうか?
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。