在 testarea 用 at.js 实现了@xxx 的效果。
但是引起了另外一个问题。 存到 DB 里面的内容是文本,就是@xxx 这类型的原文。 需要在展示的时候以链接的方式把@xxx 转换成<a href='some_link'>@xxx</a>
<a href='some_link'>@xxx</a>
想到的实现方案是做一个类似 auto_link 的 helper 来在每次访问的时候扫描文本,把@xxx 自动替换成 相应的链接
想请问下有没其他实现的方案可以参考一下?
你需要阅读,下面的任意一个:
@xxx 收到標記通知
hi, 感谢回复。 看了下 mention_filter.rb 的实现。
content.gsub!(MENTION_REGEXP) do prefix = Regexp.last_match(1) user_placeholder = Regexp.last_match(2) user_id = user_placeholder.sub(/^user/, '').to_i user = users[user_id - 1] || user_placeholder if in_code "#{prefix}@#{user}" else %(#{prefix}<a href="/#{user}" class="user-mention" title="@#{user}"><i>@</i>#{user}</a>) end end
在我看来,核心的步骤在于 gsub! 里面的几句。这里面的想法起始和我在 topic 正文里面提到的做一个类似 auto_link的 helper 是一致的,简单点来说,也是可以实现传一段 text 进去,返回所需的带<a></a>的内容。
<a></a>
那这里又有一个问题了,如果可以用简单的方式来处理,那这里面使用 html-pipeline 的出发点是什么? 可以介绍一下么?