我在我的应用程序中使用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,}/,'-')
由于
西蒙
答案 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
到初始化程序。