我现在正在做一个提及功能,所以当用户输入@时,他们为用户名输入的下一部分是可点击的,直到出现一个空格。这是假设他们正确输入了只有字母和数字的用户名。我需要它来工作,所以如果他们输入“Hi @jon!” 它发现感叹号(或任何不是字母或数字的符号)不是用户名的一部分,并将其排除在外,而不是仅仅寻找以下空格。
这就是我所拥有的:
while @comment.content.include? "@" do
at = @comment.content.index('@')
space = @comment.content.index(' ', at)
length = space - at
usernotag = @comment.content[at + 1,length - 1]
userwtag = @comment.content[at,length]
@user = User.where(:username => usernotag.downcase).first
@mentioned_users.push(@user)
replacewith = "<a href='/" + usernotag + "'>*%^$&*)()_+!$" + usernotag + "</a>"
@comment.content = @comment.content.gsub(userwtag, replacewith)
end
@comment.content = @comment.content.gsub("*%^$&*)()_+!$", "@")
知道我应该怎么做吗?