我正在嘗試在Ruby On Rails和Backbone.js中進行類似於應用程序的即時搜索。如何對模型和控制器進行異步調用並在視圖中獲取其值?
我已將所有單詞存儲在名爲Dictionary
的模型中。它包含所有單詞的列表。 現在,我想創建一個搜索欄,如果我輸入「c」,我想列出所有以「c」開頭的單詞,如果輸入「ca」,它應該列出所有以「ca」開頭的單詞。 。
是否有開源應用程序,我可以從中學習?
我正在嘗試在Ruby On Rails和Backbone.js中進行類似於應用程序的即時搜索。如何對模型和控制器進行異步調用並在視圖中獲取其值?
我已將所有單詞存儲在名爲Dictionary
的模型中。它包含所有單詞的列表。 現在,我想創建一個搜索欄,如果我輸入「c」,我想列出所有以「c」開頭的單詞,如果輸入「ca」,它應該列出所有以「ca」開頭的單詞。 。
是否有開源應用程序,我可以從中學習?
我還沒有測試過這段代碼。可能有錯別字,但我認爲它會起作用。請評論因此,如果它不能正常工作
視圖
<%= text_field_tag 'search', :nil, :class => "search_box" %>
<ul class="results">
<span class="spinning" style="display:none;"></span>
</ul>
jQuery的
$(".search_box").keyup(function(){
$.get ("/search/" + this.value)
$(".spinning").show()
)}
的routes.rb
get "/search/:search" => "dictionaries#search", :as => :search
dictionaries_controller.rb
def search
@dictionarys = Dictionary.where("word LIKE ?", params[:search])
end
我可以編輯個
視圖/ dictionarys/search.js.erb
$(".results").empty().append("<%= j(render @dictionaries) %>"
$(".spinning").hide()
視圖/ dictionarys/_dictionary.html.erb局部
<li><%=dictionary.word%></li>
使用jQuery auto_complete
,並連接AJAX調用以獲取數據庫中的值。請參閱jQuery Autocomplete documentation。
這是自動完成的。我所要求的是完全不同的。我的問題是,我如何列出詞典中的單詞。我的焦點更多地放在Ajax的部分問題上。 – d34th4ck3r
好吧,我明白了。只做一個Ajax調用,你必須寫如下查詢:'@words = Dictionary.all(:conditions => [「word like?」,「ca%」])' – VenkatK
但是這個查詢將在控制器中,對不對? 我想在我的視圖中實時顯示此查詢的結果。 – d34th4ck3r
你可以這樣做。
Onclick()在GUI中,對輸入數據作爲關鍵字的ruby服務器執行ajax調用。
在ruby方面使用類變量只能加載一次字典數據,這樣就不需要每次都進行db提取。
現在在ruby方面做正則表達式匹配,並將數據發送到GUI,這個ajax調用的onsuccess()相應地加載GUI小部件。
希望我是很清晰。
您的解決方案很明確。但是,你可以通過舉例來幫助我「通過ajax調用ruby服務器」嗎?我無法得到這部分。 – d34th4ck3r
您是否嘗試過從GUI對應用程序進行Ajax調用?我沒有得到你的問題。所說的只是這個。 http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first – LPD
這是行不通的。 :( – d34th4ck3r
你會得到什麼樣的錯誤信息? –
如果我使用簡單的$(「。results」)。append(「aasd」),它會工作,即它在每個keydown上附加aasd,但不是錯誤, (「.results」)。append(j render @dictionaries)沒有任何附加內容。 – d34th4ck3r