【发布时间】:2014-12-07 08:18:54
【问题描述】:
我正在尝试将字符串中的主题标签制作成链接。
例如我想要一个当前的字符串:“我是一个包含#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 线程 - 但挫败感让我变得更好,作为一个初学者 rubyist,我真的很感激如果有人可以请帮助我!
我的'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
【问题讨论】:
标签: ruby regex iteration hashtag