在Twitter中,如果您在推文中发布链接,例如http://stackoverflow.com/questions/8699459/get-title-content-via-link-in-rails
网址会自动更改为缩短的网址:
相应的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来解决这个问题?
非常感谢!!!
答案 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