2009-05-06 38 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