2012-12-13 33 views
0

我正在嘗試在Ruby On Rails和Backbone.js中進行類似於應用程序的即時搜索。如何對模型和控制器進行異步調用並在視圖中獲取其值?

我已將所有單詞存儲在名爲Dictionary的模型中。它包含所有單詞的列表。 現在,我想創建一個搜索欄,如果我輸入「c」,我想列出所有以「c」開頭的單詞,如果輸入「ca」,它應該列出所有以「ca」開頭的單詞。 。

是否有開源應用程序,我可以從中學習?

回答

1

我還沒有測試過這段代碼。可能有錯別字,但我認爲它會起作用。請評論因此,如果它不能正常工作

視圖

<%= 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> 
+0

這是行不通的。 :( – d34th4ck3r

+0

你會得到什麼樣的錯誤信息? –

+0

如果我使用簡單的$(「。results」)。append(「aasd」),它會工作,即它在每個keydown上附加aasd,但不是錯誤, (「.results」)。append(j render @dictionaries)沒有任何附加內容。 – d34th4ck3r

0

使用jQuery auto_complete,並連接AJAX調用以獲取數據庫中的值。請參閱jQuery Autocomplete documentation

+0

這是自動完成的。我所要求的是完全不同的。我的問題是,我如何列出詞典中的單詞。我的焦點更多地放在Ajax的部分問題上。 – d34th4ck3r

+0

好吧,我明白了。只做一個Ajax調用,你必須寫如下查詢:'@words = Dictionary.all(:conditions => [「word like?」,「ca%」])' – VenkatK

+0

但是這個查詢將在控制器中,對不對? 我想在我的視圖中實時顯示此查詢的結果。 – d34th4ck3r

0

你可以這樣做。

Onclick()在GUI中,對輸入數據作爲關鍵字的ruby服務器執行ajax調用。

在ruby方面使用類變量只能加載一次字典數據,這樣就不需要每次都進行db提取。

現在在ruby方面做正則表達式匹配,並將數據發送到GUI,這個ajax調用的onsuccess()相應地加載GUI小部件。

希望我是很清晰。

+0

您的解決方案很明確。但是,你可以通過舉例來幫助我「通過ajax調用ruby服務器」嗎?我無法得到這部分。 – d34th4ck3r

+0

您是否嘗試過從GUI對應用程序進行Ajax調用?我沒有得到你的問題。所說的只是這個。 http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first – LPD

相關問題