我已经遵循了这里提到的所有内容。然而,它不起作用。我有问题控制者。我正试图想出一个自动完成搜索框。我创建了finders_controller.rb,代码为route_to_app/app/controllers/finders_concontroller.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.-->`
代码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
从以下内容开始,如果您仍有问题,我们可以从中吸取教训。
现在您已经发布了模式文件,有一个问题马上就出现了。您已按如下方式声明自动完成。
class FindersController < ApplicationController
autocomplete :question, :question
end
应按照以下使用
autocomplete :table_name, :method_name
这不会自动复数,因此表名需要与数据库/schema.rb中的名称匹配。这里使用了:table_name => :question
,但在schema.rb文件中,表名是questions
。
试着改变这一点,如果你有其他问题,请告诉我。