2009-05-06 33 views
2

我跟着RailsCasts教程做了一個簡單的自動完成搜索,但它不起作用。 :(如何在基於RailsCasts教程的rails中簡單搜索?

視圖/供應商/索引:

<% form_tag vendors_path, :method => 'get' do %> 
    <%= text_field_with_auto_complete :vendor, 
             :name, 
             {}, 
             {:method => :get, :class => 'textbox'} %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %> 
</div> 
<%= @searchvendor.id %> 
<%= @searchterm %> 

我包括@searchterm和@ searchvendor.id作爲驗證步驟

所以這應該調用控制器=>供應商,動作=>索引:

def index 
    @searchterm = params[:vendor][:name] 

    @searchvendor = Vendor.search('checkpoint') 

而搜索方法創建的供應商/型號如下:

def self.search(search) 
    if search 
    find(:all, :conditions => ['name LIKE ?', "%#{search}%"]) 
    else 
    find(:all) 
    end 

輸出?

@searchterm確實顯示輸入的值,因爲它顯示在URL中作爲vendor [name] =?

@ searchvendor.id是一個長字符串,@ searchvendor.name顯示錯誤,名稱不是方法。

我難倒。請幫助?

鏈接教程:

http://railscasts.com/episodes/37-simple-search-form

+0

你可能想將鏈接添加到您正在使用 – RichH 2009-05-06 03:32:16

回答

3
  1. 如果你不能傳遞你的@searchterm到您的Vendor.search方法是什麼?每次傳遞'檢查點'可能不會做到這一點。

  2. @searchvendor將包含一個Array,就像你在做find(:all)一樣。您需要遍歷數組,並在每個項目上執行.name。

+0

右邊的教程,有人通過它 - 我改變了它和剪切/粘貼錯誤的代碼做一個全面的檢查......然而,#2似乎是什麼問題...!將先嚐試一下! – Angela 2009-05-06 23:40:40