Auto_complete_for问题

时间:2010-01-05 15:54:15

标签: ruby-on-rails autocomplete

我最近安装了这个插件,我打算用它创建一个Tag字段,就像StackOverFlow一样。

当我在我的AnnouncementsController上添加以下语法时(我想标记公告)它很有效:

  auto_complete_for :announcement, :title
  protect_from_forgery :only => [:create, :delete, :update]

此外,我还必须添加路由语法以使其工作:

map.resources :announcements, :collection => {:auto_complete_for_announcement_title => :get }

现在,当我尝试用标签完成相同的操作时,在我创建新公告时,我只需将“公告”替换为“标签”,将“标题”替换为“名称”,它就赢了“工作。 Tag为数据库中的Tags表提供参考。

错误说明如下:

<h1>   ActiveRecord::RecordNotFound

    in AnnouncementsController#show    </h1> 
<pre>Couldn't find Announcement with ID=auto_complete_for_tag_name</pre>

有谁能告诉我我做错了什么?

谢谢, 布赖恩

2 个答案:

答案 0 :(得分:1)

在您看来,您可能想要更改:

<%= text_field_with_auto_complete :announcement, :title %>

为:

<%= text_field_with_auto_complete :tag, :name %>

要使其正常工作,请再看一下它所给出的错误,它仍在调用公告。

---编辑:

来自autocomplete source

 def text_field_with_auto_complete(object, method, tag_options = {}, completion_options = {})

答案 1 :(得分:0)

好吧,我终于得到了问题的答案。

我在routes.rb上错过了以下内容:

  map.auto_complete '/:controller/:action',
     :requirements => { :action => /auto_complete_for_\S+/ },
     :conditions => { :method => :get }

我现在的新问题是:

如果我想对公告进行多重标记,例如:“Ruby,C#”,该怎么办?我应该更改插件的逻辑还是有功能使其工作?现在,它会检查text_field文本,不会在逗号或任何类型的分隔符之后区分新单词。

谢谢, 布赖恩