未定义的方法“自动完成”rails 3和jquery

Posted

技术标签:

【中文标题】未定义的方法“自动完成”rails 3和jquery【英文标题】:undefined method `autocomplete' rails 3 and jquery 【发布时间】:2011-12-03 19:20:18 【问题描述】:

我的汽车表中有一个名为:vin(车辆识别号)的字段,我希望它在编写某些内容时使该字段自动完成。好吧,你们都知道我的意思。

我在 ***.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' 我做了耙子路线,如果不是自动完成,我希望至少是一个工作表格。 请帮助使这项工作。谢谢。

更新

感谢bricker,我设法用未定义的方法解决了这个问题.. 表单现在出现了。但是当我开始在字段中输入字母时,没有自动完成显示,甚至更多,在控制台中我得到了这个奇怪的东西:“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'

参数获取我在这种情况下输入的字母 lh(这些是我记录中 VIN 号码的前 2 个字母),对于我写的每个字母,我都会得到这个

“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”。如果你们中的任何人可以帮助我,这里有什么问题,请做..我真的需要这样做,这样我才能继续前进。谢谢。

【问题讨论】:

【参考方案1】:

autocomplete 行进入您的控制器:

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

另外,请确保您已捆绑 gem:

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

然后重启服务器。

【讨论】:

我做了捆绑包 abd 宝石在它的位置关于自动完成..它应该在汽车模型中,如教程所说 无论如何,我试着把它放在控制器中,但没有运气。我完成的教程适用于模型中的自动完成 :car, :vin 您链接的教程明确指出将autocomplete 行放在控制器中:Add this line at the very top of the app/controllers/welcome_controller.rb file:。如果您查看here,则该行在控制器中。事实上,all three models in the example app 完全是空的。我的猜测是您需要将autocomplete 行移动到控制器并重新启动服务器。 :D 我该去睡觉了……谢谢你睁大眼睛。 :) 能否请您关注一下这篇文章,我会将其放入控制器中并让您知道结果.. 可能是一个错误。 自我注意:并重新启动服务器。

以上是关于未定义的方法“自动完成”rails 3和jquery的主要内容,如果未能解决你的问题,请参考以下文章

升级到 ruby​​ 3 和 rails 6.1 后未定义的方法“file_fixture_path”

Rails 3 - application.html.erb 中 nil:NilClass 的未定义方法“[]”

Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误

Rails 3.2:activemerchant 中未定义的方法“class_inheritable_accessor”

Rails 3 => 当我尝试 rake db:migrate 时未定义的方法'array'

未定义的方法 - 提交表单后属性为 NULL (Rails 3.2.13)