2011-10-27 8 views
2

나는 레일스에서 ​​link_to "google like"를 만들고 싶습니다.레일즈, "google like"(URL 미리보기)를 만드는 방법 link_to

설명해 드리겠습니다.

간단한 구글 검색 페이지에서

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

방법 LINK_TO 위해 레일에 JS 또는 커피 스크립트와 URL 미리보기를 제어 할 얻을? 누군가이 문제에 대한 해결책을 제시 할 수 있습니까?

답변

4

원본 링크 참조는 "예쁜 버전"이지만 mousedown 이벤트는 JavaScript를 사용하여 Google 사이트를 통해 리디렉션되는 URL을 변경합니다.

기존 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"> 

스택 오버플로

,363,210

한는 ERB를 기반으로 템플릿에 대한 검증되지 않은 JQuery와 구현 :

$('.l').mousedown(function() { 
    $(this).attr("href","<%= url_for(:controller => :redirect, :action => :index) -%>/"+$(this).attr("href")); 
}); 
+0

일부 EJS 레일스 코드를 제공 할 수 있습니까? 나는 레일스 3 AJAX에서 그렇게하는 법을 모른다. –

0

원시 솔루션,하지만 올바른 방향으로?

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

나는 이것이 오른쪽 클릭에서도 새 위치로 리다이렉트 될 것이라고 생각하지만이 구현 스타일 또한 효과가있다. 그것은 특별히 이와 같은 각 링크를 참조해야합니다. 도우미를 사용하면 도움이되지만 더 많은 데이터가 클래스에 바인딩하는 대신 각 링크에 대해 JS를 반복하여 클라이언트에 전송됩니다. – Nick

+0

그냥 클래스에주고 해당 클래스에 대한 jQuery 규칙을 설정할 수 있습니다. 추악한 URL은 사용자 정의 속성 (예 : data-ugly)에 저장되어 있습니다. –

관련 문제