再次出现新手问题...我已经使用以下代码使用Bitly缩短链接。
def bitly_links(url)
bitly ||= begin
Bitly.use_api_version_3
Bitly.new('username', 'key')
bitly.shorten(url)
end
end
这次我想做的是在评论创建后搜索并缩短评论中的所有链接。这与此博文 Using bitly in rails 3 类似,但由于使用了 for 循环而非执行,因此发现它有点令人困惑> ... 结束块。另外,我注意到该方法甚至没有被调用。
网站上的评论示例:
嘿,你应该查看帖子http://vox4life.blogspot.com/2012/11/4Life-2012-Growth-is-strong.html和这个帖子。http://vox4life.blogspot.com/2012/11/dengue-outbreak-peoples-journal.html此外 http://vox4life.blogspot.com/2012/02/transfer-factor-immunotherapy.html
会变成:
嘿,你应该查看帖子http://bit.ly/ZHdLTa和这个帖子.. http://bit.ly/TZ6Nrj此http://bit.ly/ZrnWMj
提前谢谢。
Similar question to this,但在Java
答案 0 :(得分:1)
如果你不想要for循环,我想你可以修改这个方法。我认为身体是带有URL的整个文本。
def bitly_body(body)
matches = body.scan(/((http|https):\/\/(\&|\=|\_|\?|\w|\.|\d|\/|-)+(:\d+(\&|\=|\?|\w|\.|\d|\/|-)+)?)/)
Bitly.use_api_version_3
bitly = Bitly.new("thealey", "bitly_api_key")
(0..matches.length).each do |i| # <-- changed here.
if matches[i].to_s.size > 0
logger.info("url " + matches[i][0])
if matches[i][0].include? "bit.ly"
logger.info("already a bitly url " + matches[i][0])
else
u = bitly.shorten(matches[i][0])
body[matches[i][0]] = u.short_url
end
end
end
body
end