1

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

URL 会自动更改为缩短的 URL: 在此处输入图像描述

对应的 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://andlong part被隐藏)

那么我该如何实现呢?我相信这与JS有关?或者我应该如何使用 Rails 来解决这个问题?

非常感谢!!!

4

1 回答 1

0

我认为这就是您正在寻找或至少接近它的东西。

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

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

例如:“ http://test.couch.com/333/fire ”会变成“test.couch.com/333”

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

A-Za-z0-9 and -_

在 url 中直到 "/" 并且只有

A-Za-z0-9

对于其余部分。

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

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

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

上面的行将与 javascript 执行相同的操作,或者至少会创建相同的缩短 url。

如果您的意思是如何与助手一起使用:

shortUrl= url.match(/([\w\d\-_]*\.)+(\w*$|\w*\/[\w\d]*)/).first
link_to  shortUrl, url
于 2013-04-24T14:59:38.273 回答