我已經堅持了幾天。我一直在使用#102修訂版作爲模板。Rails 3.2.1 jquery自動完成
最終,我計劃在頂部菜單欄中使用ajax來查詢兩個獨立模型的名稱字段,它使用jquery-ui自動完成,當點擊鏈接直接鏈接到所選搜索結果的顯示操作時。
但我還沒有,現在我只是想讓自動完成與單一模型一起工作。下面是我有:
-Opportunity模型,尋找落NAME屬性
-Search控制器
def index
@opportunities = Opportunity.order(:name).where("name like ?", "#{params[:term]}")
render json: @opportunities.map(&:name)
end
Search.js.coffee
jQuery ->
$('#search').autocomplete
source: $('#search').data('autocomplete-source')
搜索視圖(/應用/ views/layouts/application.html.erb:
<%= text_field_tag 'search', nil, :class => 'search-query ui-autocomplete-input', :placeholder => 'Search', data: {autocomplete_source: search_path} %>
當我運行這段代碼時,當我在搜索框中鍵入字母(讓我們假設我輸入字母B)時,我得到:
對於127.0.0.1,在2012-03-12開始GET「/ search?term = b」 01 15:17:40 -0800
通過SearchController處理#索引爲JSON
參數:{「term」=>「b」}
機會負載(0.3ms)SELECT「opportunities」。* FROM「opportunities」WHERE (像'b'這樣的名字)ORDER BY opportunities.name,name
在1ms內完成200 OK(查看:0.1ms | ActiveRecord:0.3ms)
我現在預計會發生的情況是自動完成將使用B,選擇模型中的所有名稱,然後將它們放在自動完成中,相反,我什麼也沒得到,沒有任何反應。
如果我調整我有以下看法:
<%= text_field_tag 'search', nil, :class => 'search-query ui-autocomplete-input', :placeholder => 'Search', data: {autocomplete_source: @opportunities.map(&:name)} %>
然後自動完成的工作,但與搜索欄的每個頁面將加載所有的搜索字詞到客戶端。由於可能有數千個名稱,我不想加載所有這些數據,所以我希望ajax調用可以針對數據庫實時生效,並相應地調整視圖。
我是新的鐵軌,所以我敢肯定我在這裏犯了一個愚蠢的錯誤。任何幫助將非常感激。
謝謝
非常感謝,那正是問題所在。哇,我想我盯着代碼很長的路。 – 2012-03-06 16:00:28