我的标签控制器中有以下操作:(params[:q]
来自这个插件http://loopj.com/jquery-tokeninput/)
def index
@tags = Tag.where("name like ?", "%#{params[:q]}%")
results = @tags.map(&:attributes)
@tag = Tag.find_by_name(params[:q])
if @tag.blank?
results << {:name => "Add: #{params[:q]}", :id => "CREATE_#{params[:q]}_END"}
end
respond_to do |format|
format.html
format.json { render :json => results }
end
end
这部分:
@tag = Tag.find_by_name(params[:q])
if @tag.blank?
results << {:name => "Add: #{params[:q]}", :id => "CREATE_#{params[:q]}_END"}
end
使上面的代码行仅在当前标签名称不存在时触发。
问题是,如果用户在输入中键入这样的内容:
"programming " <- a trailing white space
" programming" <- a trailing white space
无论如何都会执行代码,因为尾随空格使 Rails 认为它是一个新名称。
处理这个问题的最佳方法是什么?