rails使用正则表达式以逗号分隔的自动完成标记

我正在使用旧的auto_complete插件与gem上的taggable一起使用,试图基本上复制Stack Overflow本身的标记行为! 我或多或少做了这个rails cast中描述的内容。 对于单个标签,这非常有效。 但是,我真的希望这样做,以便每次用户输入空格或逗号(就像在Stack Overflow上一样)时,自动完成将重新开始。 我想有一些方法可以通过正则表达式来做到这一点,但我不知道如何将这种行为应用到text_field(我想用JavaScript来“重启”自动完成,但不可否认我相当弱谈到JavaScript。这就是我的观点:

 formatted_businesses_path(:js), :method => :get, :with => "'search=' + element.value" } %> 

我的控制器非常简单,只需保存特定业务的标签即可。

如果有人能指出我正确的方向(因为我不知道如何去做)我会非常感激。

我知道这是旧的,但为了重新创建这种行为,我使用了rails3-jquery-autocomplete和acts-as-taggable-on 。 他们一起工作非常好,很容易。

 // Model class Foo < ActiveRecord::Base acts_as_taggable_on :tags end // Controller class FoosController < ApplicationController autocomplete :tag, :name, :class_name => 'ActsAsTaggableOn::Tag' ... end // Routes resources :foos do collection do get :autocomplete_tag_name end end //View <% form_for :foo do |form| %> <%= form.label :tag_list, "Tags" %> <%= form.autocomplete_field :tag_list, autocomplete_tag_name_foos_path, :"data-delimiter" => ', ' %> <% end %> 

希望能帮助别人。

我会查看text_field_with_auto_complete助手的选项。 如果它不支持你所需要的东西,我会抛弃它,转而支持你可以控制的东西。 我对这样的助手/插件的经验是,如果你正在按照他们的期望去做,他们只会节省你的时间。 如果你需要任何定制的东西,那么试图解决它们会比它们的价值更加痛苦。

抛弃text_field_with_auto_complete助手,查看它在渲染页面中生成的HTML和JS。 复制并粘贴,然后修改它以执行您需要的操作。 您仍然可以使用自动完成插件的控制器端。

你想要在逗号上拆分字符串的JS看起来像这样:

 var tags = $('#myTextInput').value(); var splitTags = tags.split(/\w*,\w*/); 

JS regexen非常类似于Ruby。 正则表达式会在逗号上分开,吃掉额外的空格。