允许acts_as_taggable_on使用哈希标记

时间:2013-08-30 01:21:21

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

我正在使用acts_as_taggable_on gem:https://github.com/mbleigh/acts-as-taggable-on

此gem接受用户输入的标签,以逗号分隔,即Clever,Cool,Joyful

我有一个部分:shared / _micropost_form要求标签:

<%= form_for(@micropost) do |f| %>
   <%= f.text_field :tag_list, placeholder: "Tags", id: "genre_tag_field" %>
<% end %>

然而,有时用户使用主题标签输入标签,即#Happy #Drunk或#Stupid,#Drunk

如何创建它以便在创建Micropost之前,如果每个单词以#开头,它会检查输入的:tag_list,如果是,则删除#并添加a,(除非已经有)每个单词的结尾。因此,当用户输入#Happy #Drunk时,标签会自动保存为Happy,Drunk

Micropost模型:

acts_as_ordered_taggable

Micropost Controller:

def create
    @user = User.find(params[:user_id])
    @micropost = @user.microposts.build(params[:micropost])
    if @micropost.save
      flash[:success] = "Posted!"
      redirect_to :back
    else
      flash[:notice] = "Error!"
      redirect_to :back
    end
end

谢谢,感谢任何帮助。这可能不扔宝石吗?

1 个答案:

答案 0 :(得分:3)

虽然在实践中未经验证,但这是一个解决方案。

根据README,您可以在初始化程序中设置以下内容以删除标记名称中的特殊字符:

ActsAsTaggableOn.force_parameterize = true

似乎acts_as_taggable_on没有安装命令和默认初始值设定项。您可以将上述设置放在/initializers/中的任何文件中,并且首选专用于此gem的新文件。

通过设置,您可以在保存

之后处理所有标记名称输入
my_string.parameterize

测试

"radical)(cc".parameterize
#=> "radical-cc"

"#Happy".parameterize
#=> "happy"