Я пытаюсь сделать хэштеги внутри строки в ссылках.Ruby - попытка сделать hashtags внутри строки в ссылках
например. Мне нужна строка, которая в настоящее время: «Я - строка, содержащая #hashtag» для преобразования в: «Я строка, которая содержит #hashtag»
Код, который у меня есть на данный момент, выглядит следующим образом :
<% @messages.each do |message| %>
<% string = message.content %>
<% hashtaglinks = string.scan(/#(\d*)/).flatten %>
<% hashtaglinks.each do |tag| %>
<li><%= string = string.gsub(/##{tag}\b/, link_to("google", "##{tag}") %><li>
<% end %>
<% end %>
Я пытался (тщетно) в течение нескольких часов, чтобы получить эту работу, прочитав много подобного StackOverflow threads- но разочарование попавшего лучше меня, и как начинающее rubyist, я d действительно оцените это, если кто-то может помочь мне!
код в моем «server.rb» выглядит следующим образом:
get '/' do
@messages = Message.all
erb :index
end
post '/messages' do
content = params["content"]
hashtags = params["content"].scan(/#\w+/).flatten.map{|hashtag|
Hashtag.first_or_create(:text => hashtag)}
Message.create(:content => content, :hashtags => hashtags)
redirect to('/')
end
get '/hashtags/:text' do
hashtag = Hashtag.first(:text => params[:text])
@messages = hashtag ? hashtag.messages : []
erb :index
end
helpers do
def link_to(url,text=url,opts={})
attributes = ""
opts.each { |key,value| attributes << key.to_s << "=\"" << value << "\" "}
"<a href=\"#{url}\" #{attributes}>#{text}</a>"
end
end
Спасибо, это сработало! Время разочарования, наконец, облегчилось. –