2009-04-14 10 views
1

페이지를 렌더링 한 후 스크롤 또는 페이지를 아래로 이동하는 방법이 있습니까?Rails에서 렌더링 한 후 페이지를 아래로 스크롤

특히 내 컨트롤러 동작에서 사용자를 페이지의 특정 위치로 보내려는 상황이 있습니다. 다른 페이지의 링크 일 뿐이므로 URI 부분 식별자 ("http://blorg.com/page#id")를 사용 하겠지만 일부 조건에 따라 동적으로 생성해야합니다.

어쨌든 자바 스크립트 (프로토 타입)를 사용해야 할 수도 있지만, 일단 페이지가로드되면, 특히 컨트롤러에서 함수를 호출하는 방법을 모르겠습니다.

답변

3

정말로이 유형의 것을보기에해야합니다. 컨트롤러에서 조건을 평가하여 표시 할 페이지 부분을 결정한 다음 결과를보기로 전달해야합니다. 보기에서이 정보를 사용하여 페이지 맨 아래에 다음과 같은 작은 자바 스크립트를 추가 할 수 있습니다.

def index 
    # evaluate the condition 
    @section = (rand*10).to_i 
end 

보기보기 코드 : 당신이 위치에 브라우저 스크롤을 가질 수

<div id="#section1">some stuff</div> 
.... 
<div id="#section9">other stuff</div> 

<% if @section>0 %> 
<script type="text/javascript"> 
// <!-- 
document.location.hash="#section<%= @section %>"; 
// --> 
</script> 
+0

좋은 지적입니다! 다니엘 고마워. – Raphomet

0

컨트롤러 코드) 사용자가 자바 스크립트가 꺼져있는 경우 물론 이것은 도움이되지 않습니다 해당 페이지로 연결되는 URL에 조각 부분을 포함시켜 페이지 아래로 이동합니다. 예 : http://example.com/index.html#section3은 페이지를 'id'section3이있는 요소로 스크롤합니다. 당신은 링크, 단락 등에 해당 ID를 사용할 수 있습니다. 브라우저는 렌더링 후에 요소가 보이는지 확인합니다. 당신이 같이 할 수있는 대답이 따르는 jQuery를 사용하는 경우

1

:

$("body").scrollTop($("#my-element").position().top; 

을 또는 당신은 정말 멋진 일하려면 (권장), 당신과 같이 스크롤 상단에 애니메이션을 적용 할 수 있습니다 :

$("body").animate({scrollTop: $("#my-element").position().top},1000); 
관련 문제