2010-12-20 45 views
7

我將舊的auto_complete pluginacts as taggable on gem結合使用,試圖基本上覆制Stack Overflow本身的標記行爲!我或多或少在做這個rails cast中描述的內容。對於單個標籤,這很好。然而,我真的很想讓它每次用戶輸入空格或逗號(就像堆棧溢出一樣),自動完成將重新開始。我想通過正則表達式可以做到這一點,但我不知道如何去應用這種行爲text_field(我想象使用JavaScript來「重新啓動」的自動完成,但承認我相當弱。當它涉及到的JavaScript這是我的看法是什麼樣子:使用正則表達式用逗號分隔的rails自動完成標記

<%= text_field_with_auto_complete :business, :tags, {}, { :url => formatted_businesses_path(:js), :method => :get, :with => "'search=' + element.value" } %> 

我的控制器是非常簡單的,只需保存標籤爲特定業務

如果有人可以點我在正確的方向(由於我不知道如何去做這件事),我將不勝感激。

+0

你有沒有遇到過解決方案?我需要做同樣的事情。 – ardavis 2011-06-03 12:24:24

+0

@ardavis:即使這對你來說有點太遲了,請看看選項':tokens => [「,」,「」]'。 'control.js'使用它提供了「Tokenized incremental autocompletion」。 – evnu 2011-07-24 16:13:40

回答

10

我知道這是舊的,但重新創建此行爲我用rails3-jquery-autocompleteacts-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 %> 

希望能幫助別人。

+0

您的路徑中的「筆記」來自哪裏?應該是'foos'的權利?你可能想改變這個澄清.. – 2012-02-15 09:31:04

+0

哦錯過了那一個,謝謝。固定 – chrisgooley 2012-02-27 05:24:54

+0

您的代碼提示幫助了我,謝謝! – lesyk 2012-11-14 19:03:33

1

我想看看的選項助手。如果它不支持你需要的東西,我會拋棄它來支持你有更多控制的東西。我這樣的助手/插件的經驗是,如果你正在做他們期望的事情,他們只會節省你的時間。如果你需要定製任何東西,你會比嘗試解決它們更費心。

要溝通text_field_with_auto_complete助手,請查看它在呈現的頁面中生成的HTML和JS。複製並粘貼該文件,然後修改它以完成您所需的操作。你仍然可以使用自動完成插件的控制器端。

的JS,你會想拆就逗號的字符串將是這個樣子:

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

JS使用regexen是相當類似Ruby的。這個正則表達式將會以逗號分割,並且會佔用額外的空格。

相關問題