添加到acts_as_taggable_on的连字符标签

时间:2009-12-20 08:14:57

标签: ruby-on-rails acts-as-taggable

我在我的应用程序中使用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,}/,'-')

由于

西蒙

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以添加以下行:

ActsAsTaggableOn.force_parameterize = true

到初始化程序。