rails-3 jquery-autocomplete path helper在rails 3.1.1中没有返回正确的路径

时间:2011-10-11 17:13:02

标签: jquery ruby-on-rails jquery-autocomplete

我有一个模特:

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助手需要从前面删除/自动完成。

然而,说到这一点,我怀疑可能是我做错了什么?有什么想法吗?

1 个答案:

答案 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 %>

我曾经使用过这个宝石一段时间,除非过去几个月发生了变化,否则应该为你解决这个问题。