2013-05-30 2 views
0

내 Rails 앱의 긴 홈 페이지에는 맨 위의 링크와 맨 아래의 앵커가있어 사용자가 사이트의 상상력이 가장 많은 공헌자 목록으로 이동합니다.경로 일치 오류를 생성하지 않는 앵커 태그

링크

<a href="#link" class="bb-url">Top Contributors</a> 

앵커

<a name="link"></a> 

이의 문제가이 URL http://localhost:3000/#link를 생성하고 사용자가 페이지를 새로 고침이라면, 그 링크가되고, 한 번 클릭한다는 것입니다 http://localhost:3000/link 및 사용자가 페이지를 다시 새로 고치면 No route matches [GET] "/link" 오류가 발생합니다. 기능상의 문제 (사이트 단절)뿐만 아니라 #link를 사용하는 것은보기 싫지만 피할 수 있습니다. 이벤트를 레일에 관심

, 나는이 여러 가지 방법으로 작동하지 않았다, 레일 :anchor 옵션 그러나

<%= link_to('Top Contributors', root_path, :anchor => '#link') %> 

을 동일하게 만들려고. 첫째, 전체 페이지 새로 고침을 실행 한 다음 앵커에게 나를 데려다주지 않았습니다. 분명히 레일스 앵커를 잘못 사용하고 있지만 html 버전에는 (사용하는 방식에 따라) 자체적 인 문제가 있습니다.

이렇게하는 가장 좋은 방법을 설명해 주시겠습니까?

**Update:** 

구문은 앵커를 만들 파악되지만 문제는, 내가 링크를 클릭하면 내가 다음 페이지를 새로 고치면

<%= link_to('Top Contributors', root_path(:anchor => 'topcontributors')) %> 
<a name="topcontributors"></a> 

, 그것은 해시 태그 localhost:3000/#topcontributors과 URL을 생성하는 해시 태그 남아 localhost:3000/topcontributors 경로가 사라져서 사라지고 오류가 발생합니다. 크롬, 파이어 폭스, 사파리와 같은 문제입니다. 다음과 같이

답변

4

실제 구문은 다음과 같습니다

<%= link_to('Top Contributors', root_path(:anchor => 'link')) %> 

출처 : http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

+0

감사하지만 작동하지 않습니다. 그것은 페이지를 움직이지 않고'http : // localhost : 3000/# % 23link' URL을 만들고 있습니다. – BrainLikeADullPencil

+0

여분의'# '문자가있었습니다. 업데이트 된 답변을 확인하십시오. – depa

+0

좋습니다, 고맙습니다. 작동하지만 하드 코딩 된 앵커와 동일한 문제 (OP에 설명되어 있음)가 있습니다. 이것은 페이지 새로 고침이 있으면 'localhost : 3000/link'라는 URL을 생성하고, 페이지가 새로 고치면 일치하는 경로 오류를 생성합니다 (localhost : 3000/링크). 어떻게 피하는 지 알고 있습니까? – BrainLikeADullPencil