Rails 3.2.16自动完成

时间:2014-03-19 00:40:28

标签: ruby-on-rails-3 autocomplete

我已经按照here提到的所有内容。但是,它不起作用。我有问题控制器。我想提出自动填充搜索框。我用代码route_to_app / app / controllers / finders_controller.rb创建了finders_controller.rb

class FindersController < ApplicationController
autocomplete :question, :question
end

在路线中,我有以下路线:route_to_app / config / routes.rb

resources :finders do
  get :autocomplete_question_question, :on => :collection
end

在视图部分route_to_app / app / views / questions / index.html.erb

 <div class = "span-24 last box">
    <%form_for @finder do |f|%>
<%= f.autocomplete_field :question_question,  autocomplete_question_question_finders_path %>
<%end%>
</div><!--End span-24 box.-->` 

code route_to_app / app / views / finders / index.html.erb为空。

Javascrip文件看起来像route_to_app / app / assets / javascripts / application.js

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require autocomplete-rails

我收到以下错误消息。我确实从根本上说错了:

  

NilClass:Class的未定义方法`model_name'   显示C:/Sites/iHardie/app/views/questions/index.html.erb第8行提出:

        <div class = "span-24 last box">
    <%form_for @finder do |f|%>
<%= f.autocomplete_field :question_question, autocomplete_question_question_finders_path %>
<%end%>
</div><!--End span-24 box.-->

有人可以帮忙吗?我被困在这里一段时间了。我会买一个漂亮的比萨饼或送一张漂亮的礼品卡给谁帮我解决问题。

这是问题数据库的样子:

create_table "questions", :force => true do |t|
t.string   "question"
t.string   "answer"
t.integer  "product"
t.integer  "priority"
t.integer  "user"
t.string   "type"
t.boolean  "favorite"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false     end

1 个答案:

答案 0 :(得分:0)

从以下开始,如果您仍然遇到问题,我们可以从那里接受。

现在您已发布架构文件,有一个问题会立即跳出来。您已声明自动填充如下。

class FindersController < ApplicationController
  autocomplete :question, :question
end

这应该按如下方式使用

autocomplete :table_name, :method_name

这不会自动复数化,因此表名需要与数据库/ schema.rb中的内容相匹配。您在这里使用了:table_name => :question,但在schema.rb文件中,表名为questions

尝试更改此内容,如果您遇到其他问题,请与我们联系。