ruby auto link username - PullRequest
       4

ruby auto link username

1 голос
/ 18 апреля 2011

Что было бы хорошим способом "автоматически связать" слова с @ перед ними, как это делает твиттер?Например, auto_link_user («Hello @matt, пожалуйста, отправьте файл на harry@gmail.com») вернет «Hello @ matt », пожалуйста, отправьте файл на harry@gmail.com'

I'mпытаясь сделать именно это в Ruby http://www.ideone.com/aGklx

Ответы [ 3 ]

1 голос
/ 18 апреля 2011
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

0 голосов
/ 18 апреля 2011

обобщить путь с базовым URL,

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

добавьте этот метод к одному из помощников и вызовите его как

  <%= append_urls(str_to_append_url,"www.twitter.com/") %>
0 голосов
/ 18 апреля 2011

Если вы ищете прямую ссылку на Twitter (из вашего вопроса не ясно, пытаетесь ли вы это сделать), вам следует взглянуть на их @ везде API.

РЕДАКТИРОВАТЬ : Вы могли бы вместо того, чтобы делать это в ruby, делать то, что вы хотите сделать с Javascript на стороне клиента:

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

Это не совсем то, что вы былиищу, кажется, но это вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...