2011-01-04 11 views
5

acts-as-taggable-on gemindeki varsayılan sınırlayıcı virgül şeklindedir. Rails 3 uygulamamda bunu bir alana değiştirmek istiyorum. Örneğin, tag_list böyle atanmalıdır:Varsayılan sınırlayıcıyı, etiketlenebilir eylemlerle değiştirme

object.tag_list = "tagone tagtwo tagthree" 

yerine böyle daha:

object.tag_list = "tagone, tagtwo, tagthree" 

sınırlayıcı değiştirme hakkında gitmek için en iyi yolu nedir?

ActsAsTaggableOn::TagList.delimiter = ' ' 

cevap

8

Bir başlatıcısı olarak ActsAsTaggableOn :: TagList sınıfına

yılında sınırlayıcı sınıf değişkeni tanımlamak gerek Bunu uygulayan sınıfta başka bir yöntem oluşturun:

class MyClass < ActiveRecord::Base 
    acts_as_taggable 

    def human_tag_list 
    self.tag_list.gsub(', ', ' ') 
    end 

    def human_tag_list= list_of_tags 
    self.tag_list = list_of_tags.gsub(' ', ',') 
    end 
end 

MyClass.get(1).tag_list # => "tagone, tagtwo, tagthree" 
MyClass.get(1).human_tag_list # => "tagone and tagtwo and tagthree" 
MyClass.get(1).human_tag_list = "tagone tagtwo tagthree" 
+0

Parlak, bu tam olarak ihtiyacım olan şey. –

+0

kodu okunurken bulundu – shingara

+8

en yeni sürümde: ActsAsTaggableOn.delimiter = '' – linjunhalida

1

Ben eylemleri-as-taggable-on içinde etrafında hack gitmezdim,: eklemek

+0

Kullanıcı benim tag_list bir metin alanı olsa atama olacağından, bu benim uygulama için çalışmayacak (örneğin <% = f. text_field: tag_list%> ') ve etiketleri ayırmak için virgül yerine boşluk yazabilmelerini istiyorum. Ancak bu, oluşturulduktan sonra etiketlerin sunulması için iyi bir çözüm. –

+0

Bu durumda, bu durumu işlemek için kodu güncelleyeceğim. – stef

İlgili konular