ruby自动链接用户名

时间:2011-04-18 16:16:44

标签: ruby

什么是自动链接的好方法"像@在他们面前的话像twitter一样吗? 例如auto_link_user(' Hello @matt请发送文件到harry@gmail.com')会返回 '您好@matt请将文件发送至harry@gmail.com'

我试图在Ruby http://www.ideone.com/aGklx

中做到这一点

3 个答案:

答案 0 :(得分:1)

str = "@foo, I'm @bar. My email is bar@bar.com"
r = /(^|\s)@([a-z0-9_]+)/i

str.gsub(r){|x| "#{$1}<a href=\"http://wwww.twitter.com/#{$2}\">@#{$2}<a/>"}
#=> "<a href=\"http://wwww.twitter.com/foo\">@foo<a/>, I'm <a href=\"http://wwww.twitter.com/bar\">@bar<a/>. My email is bar@bar.com" 

使用String#gsub

答案 1 :(得分:0)

如果您正在寻找直接链接到Twitter(从您的问题中不清楚这是您正在尝试做什么),那么您应该查看他们的@anywhere API。

编辑:您可以在客户端使用Javascript执行您想要执行的操作,而不是在ruby中执行此操作:

<script type="text/javascript">
    twttr.anywhere(function (T) {
        T("#linkify-this-content").linkifyUsers();
    });
</script>

看起来并不是你想要的,但这是一个选择。

答案 2 :(得分:0)

使用基本网址概括方式,

def append_urls str, base_url

str.gsub!(/(^|\s|\b)@([a-z0-9_]+)/i) do |word|
  word = $2
"<a href='#{base_url}#{word}'>#{word}</a>"
end

end

将此方法添加到helper之一并在视图中调用为

  <%= append_urls(str_to_append_url,"www.twitter.com/") %>