Rails, как создать "google like" (предварительный просмотр URL) link_to - PullRequest
2 голосов
/ 27 октября 2011

Я хочу создать ссылку на "google like" в Rails.

Позвольте мне объяснить.

На простой странице поиска Google http://www.google.com/search?hl=en&source=hp&biw=1280&bih=658&q=stackoverflow&oq=stackoverflow&aq=f&aqi=g10&aql=1&gs_sm=e&gs_upl=65l2231l0l2364l13l13l0l5l5l1l297l1698l1.2.5l8l0

Все выглядит просто для простого пользователя.

Предварительный просмотр URL stackoverflow.com

Но когда я нажимаю copy link location, я получаю этот адрес http://www.google.com/url?sa=t&rct=j&q=stackoverflow&source=web&cd=1&ved=0CC8QFjAA&url=http%3A%2F%2Fstackoverflow.com%2F&ei=JVOpTra5M-Pi4QT1pPwk&usg=AFQjCNERidL9Hb6OvGW93_Y6MRj3aTdMVA&sig2=_ARyobDs5AzfZw4YwBNg1g

Как управлять предварительным просмотром URL с помощью JS или Coffescript в Rails для link_to? Может кто-нибудь предложить какое-нибудь решение этой проблемы?

Ответы [ 2 ]

4 голосов
/ 27 октября 2011

Исходная ссылка - «красивая версия», но событие mousedown изменяет URL-адрес для перенаправления через сайт Google с использованием JavaScript.

Оригинальный HTML:

<a class="l" onmousedown="return rwt(this,'','','','1','AFQjCNERidL9Hb6OvGW93_Y6MRj3aTdMVA','','0CDAQFjAA')" href="http://stackoverflow.com/">

Переполнение стека

После события mousedown (даже щелчок правой кнопкой мыши):

<a class="l" onmousedown="return rwt(this,'','','','1','AFQjCNERidL9Hb6OvGW93_Y6MRj3aTdMVA','','0CDAQFjAA')" href="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjAA&url=http%3A%2F%2Fstackoverflow.com%2F&ei=aVepTtjwJ4nlsQKTvLHbBQ&usg=AFQjCNERidL9Hb6OvGW93_Y6MRj3aTdMVA">

Переполнение стека

Непроверенная реализация JQuery для шаблона на основе ERB:

$('.l').mousedown(function() {
  $(this).attr("href","<%= url_for(:controller => :redirect, :action => :index) -%>/"+$(this).attr("href"));
});
0 голосов
/ 27 октября 2011

Примитивное решение, но правильное направление?

<%= link_to "Test", "Pretty.url", :onmousedown => "window.location.href = 'UGLY.URL'; return false;" %>
...