2011-10-09 93 views
2

我有一个字段在它的汽车表叫做:vin(车辆识别号码),我希望它使这个字段在写东西时自动完成。好吧,你们都知道我的意思是。未定义的方法`自动完成'的轨道3和jquery

我在stackoverflow.com上找到了几个答案,但没有用。

我只是想说点..我在这里跟着一个关于它的教程https://github.com/crowdint/rails3-jquery-autocomplete-app,它工作的很好,我只是做了一个新的应用程序。所以我决定把这个在我的应用程序,我的工作,我已经设置了一切都像它应该是,我想..但我得到这个错误

undefined method `autocomplete' for #< Class:0xb5e2da28> 

其次

app/models/car.rb:2 
app/controllers/cars_controller.rb:9:in `index' 

这里是从几行Car.rb

class Car < ActiveRecord::Base 
autocomplete :car, :vin 
    has_one :carname 
    has_one :carmodel 

一块cars_controler的

def index 
    @search = Car.search(params[:search]) 
    @cars = @search.all.paginate :page => params[:page], :per_page => 18 
    # @cars = @search.relation.paginate :page => params[:page], :per_page => 18 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @cars } 
     format.json { render :json => @cars.map(&:attributes) } 
    end 
    end 

鉴于我有

<%= form_tag do %> 
    <%= autocomplete_field_tag 'vin', '',car_autocomplete_car_name_path %> 
<% end %> 

在routes.rb中:get 'car/autocomplete_car_vin' 我做了耙路线和我的预期如果没有自动完成至少一个工作形式。 请帮助使此工作。谢谢。

更新

感谢布里克我设法解决与未定义的方法的问题..形式正在显示出来。但是,当我开始在字段中键入字母没有自动完成显示和甚至更多,在控制台中我得到这个奇怪的事情:“ID” =>“autocomplete_car_vin”

Started GET "/cars/autocomplete_car_vin?term=lh" for 127.0.0.1 at Sun Oct 09 07:50:06 +0300 2011 
    Processing by CarsController#show as JSON 
    Parameters: {"term"=>"lh", "id"=>"autocomplete_car_vin"} 
    SQL (0.6ms) SHOW TABLES 
    Car Load (0.2ms) SELECT `cars`.* FROM `cars` WHERE `cars`.`id` = 0 LIMIT 1 
Completed in 38ms 

ActiveRecord::RecordNotFound (Couldn't find Car with ID=autocomplete_vin): 
    app/controllers/cars_controller.rb:29:in `show' 

的PARAMATERS需要我键入的字母在这种情况下,lh(这些是我记录中VIN号码的前两个字母),对于我写的每个字母,我得到这个

“id”=>“autocomplete_vin”,找不到ID = autocomplete_vin的汽车

比较我的应用程序的控制台结果,我将显示教程中的控制台操作,效果很好

Started GET "/welcome/autocomplete_brand_name?term=su" for 127.0.0.1 at Sun Oct 09 04:04:57 +0300 2011 
    Processing by WelcomeController#autocomplete_brand_name as JSON 
    Parameters: {"term"=>"su"} 
    Brand Load (0.6ms) SELECT `brands`.* FROM `brands` WHERE (LOWER(name) LIKE 'su%') ORDER BY name ASC LIMIT 10 
Completed 200 OK in 24ms (Views: 4.6ms | ActiveRecord: 0.6ms) 

因为您看到没有“id”=>“autocomplete_brand_name”。这里有什么问题,如果你们中的任何人都可以帮助我,请做..我真的需要做这样的事情,所以我可以继续前进。谢谢。

回答

9

autocomplete线会在你的控制器:

class CarsController < ApplicationController 
    autocomplete :car, :vin 
    # ... 
end 

此外,还要确保你已经绑定的宝石:

gem 'rails3-jquery-autocomplete` # in Gemfile 
$ bundle install # in console 

并重新启动服务器。

+0

我做了捆绑abd宝石是在它的地方 关于自动完成..它应该在汽车模型作为教程说反正 – rmagnum2002

+0

,我特里把它放在控制器,但没有运气..我已经完成的教程工作正常自动完成:车,:VIN在模型 – rmagnum2002

+1

您链接的教程明确指出要在控制器中放置'autocomplete'行:'在app/controllers/welcome_controller.rb文件的顶部添加这行:'。如果你看[这里](https://github.com/crowdint/rails3-jquery-autocomplete-app/blob/master/app/controllers/welcome_controller.rb),该行在控制器中。事实上,[示例应用程序中的所有三个模型](https://github.com/crowdint/rails3-jquery-autocomplete-app/tree/master/app/models)都是完全空的。我的猜测是,您需要将'autocomplete'行移到控制器并重新启动服务器。 – bricker

相关问题