我最近安装了这个插件,我打算用它创建一个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>
有谁能告诉我我做错了什么?
谢谢, 布赖恩
答案 0 :(得分:1)
在您看来,您可能想要更改:
<%= text_field_with_auto_complete :announcement, :title %>
为:
<%= text_field_with_auto_complete :tag, :name %>
要使其正常工作,请再看一下它所给出的错误,它仍在调用公告。
---编辑:
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文本,不会在逗号或任何类型的分隔符之后区分新单词。
谢谢, 布赖恩