当用户输入评论时,我想研究在他们的网站上制作类似 Youtube 的功能,如果他们有类似“@username”的内容,系统会识别“@”符号并链接到用户名的评论。我正在使用 Rails 3 进行开发,但有关此功能所需逻辑的任何信息将不胜感激,谢谢。
编辑:附加问题:放置逻辑的最佳位置在哪里?我觉得控制器会这样,如果客户端没有javascript,它仍然可以工作。
当用户输入评论时,我想研究在他们的网站上制作类似 Youtube 的功能,如果他们有类似“@username”的内容,系统会识别“@”符号并链接到用户名的评论。我正在使用 Rails 3 进行开发,但有关此功能所需逻辑的任何信息将不胜感激,谢谢。
编辑:附加问题:放置逻辑的最佳位置在哪里?我觉得控制器会这样,如果客户端没有javascript,它仍然可以工作。
我确信有多种(甚至更好)的方法可以做到这一点。我是怎么做到的——
解析输入字符串的函数:我写了一个辅助函数 -
将新帖子(带有链接的帖子)写入数据库。
def mention_users_and_tags(post)
post_with_user_links = ""
words = post.message.split
words.each do |word|
if word[0] =~ /^@.*/ and word.length > 1
if extract_user_if_exists(word[1,word.length-1])
post_with_user_links << "#{link_to "#{word}", :controller => "users", :action => "show", :id => @mentioned_user.id} "
else
post_with_user_links << word << " "
end
end
end
end
编辑 - 我认为这个方法应该写在模型中并在控制器中调用。这是我第一次在 Rails 中编码,所以我不太确定一切都在哪里,我把它写成一个辅助函数。但现在我知道所有业务逻辑都在模型中。由于在帖子中提及用户可以被视为业务逻辑的一部分,因此我会在模型中为其编写一个函数。