0

検索バーにオートコンプリートを追加したいと考えています。しかし、完成したユーザーを送信すると、次の URL を取得します。

/users?utf8=✓&search=Thomas

それ以外の/users/23

私のコントローラー

@users = User.find(:all, :select=>'name').map(&:name)

Javascript

 <%= javascript_tag "var autocomplete_items = #{ @users };" %>

 <script type="text/javascript">
            jQuery(document).ready(function() {
                $('#auto_complete').typeahead({source: autocomplete_items});
            });
 </script>

私のフォーム

<%= form_tag users_path, :method => :get do %>
  <%= text_field_tag :search, params[:search], :id => "auto_complete" %>
<% end %>

ご協力いただきありがとうございます

4

1 に答える 1

0

Bootstrapのドキュメントから収集できることから、typeaheadテキストの前に入力するだけで、それを実行するように設計されています。入力を受け取り、そのソースに入力と一致するものがあるかどうかを確認し、入力を完了するためのいくつかの選択肢を提供します。ユーザーが別の方法を選択した場合、先行入力により、選択した文字列が入力されます。

したがって、取得するのは入力フィールドの文字列だけです。

Typeaheadは、必要なリンクを作成する方法を知りません。/uses/23

Bootstrap typeaheadがその方法を知っていた場合、ユーザーの名前のみを提供しているため、必要な情報を提供していません。

私はあなたがしたいことは次のとおりだと思います:

  • ユーザー名とユーザーパスの両方をビューに送信します
  • アイテムが選択されたときにコールバックをトリガーできる、ある種のオートコンプリートウィジェットを使用します。
  • ユーザーが選択されたときに、コールバックを使用して選択されたユーザーパスに移動します

私はBootstrapの先行入力に完全には精通していません-あなたはそれでこのようなことをすることができるかもしれません。

しかし、jQuery UI:sのオートコンプリートなど、より適切に文書化されたものを使用することを主張します。

于 2013-02-28T14:41:50.447 に答える