2009-04-14 45 views
1

在渲染頁面之後是否有滾動或跳轉頁面的方法?在Rails中渲染後向下滾動頁面

具體而言,在我的控制器操作中,有些情況下我想將用戶發送到頁面上的特定位置。如果它只是另一個頁面的鏈接,我可能會使用URI片段標識符 - 「http://blorg.com/page#id」 - 但這需要根據某些條件動態生成。

也許我需要以某種方式使用JavaScript(Prototype),但是我不知道如何在頁面加載完成後調用函數,特別是從控制器中。

回答

3

你應該真的在你看來做這種事情。在你的控制器中,你應該評估你的條件來確定你想要顯示的頁面部分,然後將結果傳遞到視圖中。然後,您可以在視圖中使用這些信息,在頁面底部添加一小段JavaScript,並執行以下操作。當然,這並不能幫助你,如果用戶已關閉JavaScript;)

控制器代碼:

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 2009-04-15 01:34:37

0

你可以有瀏覽器滾動到一個位置通過在鏈接到頁面的url中包含片段部分來減少頁面。例如http://example.com/index.html#section3將使用'id'section3將頁面滾動到元素。您可以在鏈接,段落等上使用該ID,瀏覽器將確保該元素在渲染後可見。

1

如果您正在使用jQuery的答案可能如下:

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

或者,如果你想成爲真正看中的(推薦),您可以動畫滾動頂部像這樣:

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