首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在中使用bitly

在中使用bitly
EN

Stack Overflow用户
提问于 2013-12-24 13:40:10
回答 3查看 1.5K关注 0票数 3

我正在构建一个小型应用程序,用户可以在其中发布短消息和urls (twitter)

为了呈现包含urls的文章,我使用autolink创业板autolink和下面的代码,从文本中提取urls并将它们转换为链接:

代码语言:javascript
复制
<%= auto_link(feed_item.content) %>

我还使用bitly和bitly实现了一个缩短的url;https://github.com/philnash/bitly/

代码语言:javascript
复制
<%= auto_link(client.shorten("http://google.com").short_url) %>

在创建帖子时,我尝试使用模型中的以下代码进行缩短。

代码语言:javascript
复制
class Micropost < ActiveRecord::Base
  before_create :bitly_shorten

  private

  def bitly_shorten
    client = Bitly.client 
    urls = URI.extract(self.content) 
     urls.each do |url|
        self.content.gsub(url, client.shorten(url).short_url) 
    end
  end
end

尽管链接显示在我的小仪表板中,但只有完整的urls保存到数据库中。这个代码有什么问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-24 14:20:52

下面是您需要遵循的步骤

  1. 首先,您需要提取消息中的所有URL。 urls = URI.extract(feed_item.content)
  2. 然后将所有URL替换为Bitly缩短URL。 urls.each do \url\ feed_item.content.gsub(url,client.shorten(url).short_url)端
  3. 然后使用auto_link <%= auto_link(feed_item.content) %>
票数 2
EN

Stack Overflow用户

发布于 2013-12-24 14:20:32

您可能应该在用户创建post时执行缩短。

创建帖子时,从消息中提取所有链接并缩短它们。然后,您只需要在运行时显示内容。

这更有效,因为它将防止页面每次提供视图时调用缩短服务。

票数 2
EN

Stack Overflow用户

发布于 2014-01-14 13:54:19

在尝试了控制台中的代码之后,我意识到我错过了gsub之后的!,这使得被替换的url无法保存到数据库中。

以下解决方案适用于我;

代码语言:javascript
复制
class Micropost < ActiveRecord::Base
  before_validation :bitly_shorten #shorten before the 150 character limit validation

  private

  def bitly_shorten
    client = Bitly.client 
    urls = URI.extract(self.content) 
     urls.each do |url|
        self.content.gsub!(url, client.shorten(url).short_url) 
    end
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20761979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档