我有一个模特:
class EvidenceType < ActiveRecord::Base
has_many :evidences
attr_accessible :name
end
控制器:
class EvidencesController < ApplicationController
autocomplete :evidence_type, :name
在我看来:
<%= form_tag do %>
<%= autocomplete_field_tag 'evidence', '', :autocomplete => autocomplete_evidence_type_name_evidences_path %>
<% end %>
在Routes.rb中:
resources :evidences do
get :autocomplete_evidence_type_name, :on => :collection
end
rake路线给了我:
autocomplete_evidence_type_name_evidences GET /evidences/autocomplete_evidence_type_name(.:format) {:action=>"autocomplete_evidence_type_name", :controller=>"evidences"}
当我开始输入自动填充字段时,我在rails log中看到了一个请求:
Started GET "/autocomplete/evidences/autocomplete_evidence_type_name?term=co" for 127.0.0.1 at Tue Oct 11 17:45:57 +0100 2011
ActionController::RoutingError (No route matches [GET] "/autocomplete/evidences/autocomplete_evidence_type_name"):
如果我手动转到http://localhost:3000/evidences/autocomplete_evidence_type_name?term=xx,我会返回所需的片段,这让我相信所有内容似乎都与jquery正确粘合在一起。
我想我需要在我的路线上添加一个额外的“自动完成”(似乎是hackish?),或者我的autocomplete_evidence_type_name_evidences_path助手需要从前面删除/自动完成。
然而,说到这一点,我怀疑可能是我做错了什么?有什么想法吗?
答案 0 :(得分:1)
在这一行:
<%= autocomplete_field_tag 'evidence', '', :autocomplete => autocomplete_evidence_type_name_evidences_path %>
您不需要:autocomplete =>
。这就是为URL添加额外/autocomplete
的内容。只需使用:
<%= autocomplete_field_tag 'evidence', '', autocomplete_evidence_type_name_evidences_path %>
我曾经使用过这个宝石一段时间,除非过去几个月发生了变化,否则应该为你解决这个问题。