2010-01-05 63 views
0

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

当我把下面的语法我AnnouncementsController(我要标记公告)它的伟大工程:

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

此外,我不得不添加路由语法以及使其工作:

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

现在,当我尝试完成与标签相同的操作时,在创建新通知时,我只需将“标签”和“标题”替换为“标签”一词,即可获得没有工作。标记在数据库中为我的标记表引用。

错误说以下内容:

<h1> ActiveRecord::RecordNotFound 

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

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

感谢, 布赖恩

回答

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 = {}) 
+0

我不明白的东西: 什么做text_field_with_auto_complete的参数是指什么?和auto_complete_for方法相同的问题。 因为我试图使它适用于标签,从我的公告视图。 – 2010-01-05 16:21:58

+0

你可以发布你的视图的代码吗? – makevoid 2010-01-05 16:37:46

+0

的作品的一个是: Tags2:<%= text_field_with_auto_complete:公告,:标题,{},{:方法=> :获得}%> 而一个不工作如下: 标签:<%= text_field_with_auto_complete:标记,:名称,{},{:方法=> :get}%> – 2010-01-05 16:40:36

0

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

我是缺少在routes.rb中的以下内容:

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

我的新的问题,现在它的工作原理是这样的:

如果我想多标签的通知,例如:“ Ruby,C#“。我应该改变插件的逻辑还是有一个功能来使这个工作?因为现在,它将检查text_field文本,而不是在逗号或任何类型的分隔符之后区分新的单词。

感谢, 布赖恩

+0

我可以在视图中的“method”参数之后用“token =>','”来做到这一点。 – 2010-01-06 14:25:25