Rails 如何在页面上以链接的方式显示 @xxxx

leiz_me · 2017年05月03日 · 最后由 leiz_me 回复于 2017年05月03日 · 2242 次阅读

在 testarea 用 at.js 实现了@xxx 的效果。

但是引起了另外一个问题。 存到 DB 里面的内容是文本,就是@xxx 这类型的原文。 需要在展示的时候以链接的方式把@xxx 转换成<a href='some_link'>@xxx</a>

想到的实现方案是做一个类似 auto_link 的 helper 来在每次访问的时候扫描文本,把@xxx 自动替换成 相应的链接

想请问下有没其他实现的方案可以参考一下?

@xxx 收到標記通知

huacnlee 回复

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>的内容。

那这里又有一个问题了,如果可以用简单的方式来处理,那这里面使用 html-pipeline 的出发点是什么? 可以介绍一下么?

leiz_me 关闭了讨论。 11月15日 09:35
需要 登录 后方可回复, 如果你还没有账号请 注册新账号