0

Railscasts 102から離れます。

現在の問題は、ページの読み込み時に検索フォームに既にデータが入力されていることです。

1 つのモデル、リスト、およびそのモデルの 5 つの列 (Web サイト、URL、コメント、医師、および日付) があります。この場合、私はウェブサイトについて心配しています。

私のlistings.js.coffeeは

jQuery ->
  $('#search').autocomplete
    source: $('#search').data('autocomplete-source')

そして私のindex.html.erbファイル(重要な部分)は

<%= form_tag '/listings', :method => :get do %>
  <%= text_field_tag :search, data: {autocomplete_source: Listing.order(:website).map(&:website)} %>
  <%= submit_tag 'Search', :class => 'echo-search-tag', :name => nil %>
<% end %>

ページをロードすると、検索フォームにはすでにデータが入力されています

{:data=>{:autocomplete_source=>["Doctors4US", "改善方法", "Rafael's Epic Doctor Site", "Testing Admin", "WebMD"]}}

明らかに、これは当てはまりません。JS コンソールに次のエラーが表示されます。

キャッチされていない TypeError: オブジェクト # のプロパティ 'source' は関数ではありません

これに関して別のスタックオーバーフローの投稿を見ました。その解決策を試しましたが、違いはありませんでした。

注: ['foo', 'fore', 'food'] のように、listings.js.coffee のソースのテスト データを試したところ、オートコンプリートは正しく機能していました。

また、オートコンプリートを除いて、検索機能が正しく機能していることにも注意してください。

どんな入力でも大歓迎です:)

4

1 に答える 1

1

問題は、text_field_tag が 2 つの引数を取ることでした。そのため、検索フォームにデータが事前入力されていました。

したがって、2番目の引数に nil を追加しました

<%= text_field_tag :search, nil, data: {autocomplete_source: Listing.order(:website).map(&:website)} %>

そして出来上がり!働く。

現在、Listing.order と .map に複数の列を追加する方法を見つけようとしています (つまり、:website だけでなく、:comments、:doctor、および :url を持つ)。入力していただければ幸いです。

于 2012-10-11T16:36:57.797 に答える