2009-12-20 18 views
1

我在我的應用程序中使用acts_ as_ taggable_on並使其完美工作,但是我正在查找有關如何進行一項修改的信息。已將連字符標籤添加到acts_as_taggable_on

目前,如果我輸入一個標籤,它包含空格,標籤保存這些空間,因此,查看所有記錄這個標籤我有類似:

http://myapp.local/tag/this%20tag%20has%20spaces

我怎麼能斷字標籤當他們第一次被acts_as_taggable_on保存時,標籤被存儲爲this-tag-has-spaces?

我可以用下面的值來代替這些值,但是如何在acts_as_taggable_on接管並保存標籤列表之前做到這一點?

tag.downcase.gsub(/[^[:alnum:]]/,'-').gsub(/-{2,}/,'-')

感謝

西蒙

回答

5

通過採取的是acts_as_taggable_on_steroids暴露出tag_list訪問可以寫入到,這裏的事實的優點是什麼,我做了我的車型之一。我 假設你可以做同樣的事情:

class MyTaggableObject < ActiveRecord::Base 
    acts_as_taggable 

    before_validation :clean_up_tags 

    # Clean up tag formatting 
    def clean_up_tags 
    # Make lowercase 
    self.tag_list.map!(&:downcase) 

    # Replace any non-word ([^\w]) characters with a hyphen 
    self.tag_list.map! {|tag| tag.gsub(/[^\w]+/i,'-')} 
    end 
end 
+0

完美 - 謝謝! – simonyoung 2009-12-20 23:58:46

1

您可以添加以下行:

ActsAsTaggableOn.force_parameterize = true 

到初始化。

+0

這是一個新的,更簡單的方法。 – 2014-06-22 09:04:27