我正在使用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
谢谢,感谢任何帮助。这可能不扔宝石吗?
答案 0 :(得分:3)
虽然在实践中未经验证,但这是一个解决方案。
根据README,您可以在初始化程序中设置以下内容以删除标记名称中的特殊字符:
ActsAsTaggableOn.force_parameterize = true
似乎acts_as_taggable_on没有安装命令和默认初始值设定项。您可以将上述设置放在/initializers/
中的任何文件中,并且首选专用于此gem的新文件。
通过设置,您可以在保存
之后处理所有标记名称输入my_string.parameterize
测试
"radical)(cc".parameterize
#=> "radical-cc"
"#Happy".parameterize
#=> "happy"