Ruby on Rails извлекает идентификатор из url, вставляет в image_tag (gsub?)

#ruby-on-rails #ruby-on-rails-3 #twitter #gsub #twitpic

#ruby-on-rails #ruby-on-rails-3 #Twitter #gsub #twitpic

Вопрос:

У меня есть канал Twitter, отображающий мои твиты на странице. Я также хочу включить миниатюры моих изображений twitpic. Я использовал gsub для замены текста, но мне трудно разобраться в синтаксисе.

Типичный вывод twitpic tweet с необработанным тегом будет выглядеть следующим образом:

 This is a tweet with an image. http://twitpic.com/12345
  

Тогда ссылка на изображение будет

 http://twitpic.com/show/thumb/12345.jpg
  

Вот простой код для отображения текста:

 <% @tweets.each do |tweet| %>
  <li>
    <%= raw tweet.text %>
  </li>
<% end %>
  

Итак, я экспериментировал с gsub, но довольно сильно застрял.

Я могу выполнить поиск по http://twitpic.com /* по /http://twitpic.com ?[^] и затем удаляет все вместе с url, заменяя его необработанным html, но это не помогает, если я хочу связать изображение.

Если бы я мог извлечь идентификатор twitpic (http://twitpic.com/12345 ), я мог бы поместить этот 12345 во вспомогательный метод, который вводит строку и вставляет ее в связанное изображение.

Если бы кто-нибудь мог дать мне некоторое представление о том, как извлечь этот идентификатор, я был бы очень признателен.

Ответ №1:

Может быть, вы можете использовать #split вместо регулярного выражения?

 "This is a tweet with an image. http://twitpic.com/12345".split("http://twitpic.com/")[1]
  

Комментарии:

1. Возможно, не самое элегантное решение, но это сработало великолепно: <%= необработанный tweet.text.gsub(/http://twitpic.com ? [^>] /) { ссылка на image_tag(» twitpic.com/show/thumb /# {tweet.text.split(» twitpic.com /»)[1] }», :border=>0), » twitpic.com /# {tweet.text.split(» twitpic.com /»)[1] }» } %>

Ответ №2:

Если вы хотите извлечь идентификатор из http://twitpic.com/show/thumb/12345.jpg , попробуйте это, чтобы извлечь идентификатор из него:

 "http://twitpic.com/show/thumb/12345.jpg".scan(/^http://twitpic.com/show/thumb/(d ).jpg$/).flatten.first