自动缩短JS或Rails中的URL

时间:2013-04-24 13:50:41

标签: javascript jquery ruby-on-rails

在Twitter中,如果您在推文中发布链接,例如http://stackoverflow.com/questions/8699459/get-title-content-via-link-in-rails

网址会自动更改为缩短的网址: enter image description here

相应的Html是:

  <span class="invisible">http://</span>
  <span class="js-display-url">stackoverflow.com/questions/8699</span>
  <span class="invisible">459/get-title-content-via-link-in-rails</span>

(隐藏http://long part

那么我怎样才能做到这一点?我相信这与JS有关吗?或者我应该如何使用Rails来解决这个问题?

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

我认为这是你正在寻找或至少接近它。

aHref.innerHTML = aHref.match(/([\w\d\-_]*\.)+(\w*$|\w*\/[\w\d]*)/)[0];

总之;这会忽略protocol://并将每个字符串以“。”结尾。 (对于子域)直到它到达最后一个项目(可能是“com”,可能是“uk”,如“co.uk”),由“$”(字符串的结尾)或“/”后跟一个字母数字字符串。使用生成的字符串,它将替换innerHTML或显示的内容值。

例如:“http://test.couch.com/333/fire”将成为“test.couch.com/333”

编辑:我应该补充一点,我只考虑了

A-Za-z0-9 and -_

在网址中直到“/”而且只有

A-Za-z0-9

其余部分。

编辑2:在Rails控制器中使用

同样的原则适用但没有innerHTML,因为它是DOM元素属性

 url = url.match(/([\w\d\-_]*\.)+(\w*$|\w*\/[\w\d]*)/).first

上面的行将与javascript做同样的事情,或者至少会创建相同的缩短网址。

如果你的意思是如何使用帮助者:

shortUrl= url.match(/([\w\d\-_]*\.)+(\w*$|\w*\/[\w\d]*)/).first
link_to  shortUrl, url