在Rails中渲染后向下滚动页面

在Rails中渲染后向下滚动页面

问题描述:

在渲染页面之后是否有滚动或跳转页面的方法?在Rails中渲染后向下滚动页面

具体而言,在我的控制器操作中,有些情况下我想将用户发送到页面上的特定位置。如果它只是另一个页面的链接,我可能会使用URI片段标识符 - “http://blorg.com/page#id” - 但这需要根据某些条件动态生成。

也许我需要以某种方式使用JavaScript(Prototype),但是我不知道如何在页面加载完成后调用函数,特别是从控制器中。

你应该真的在你看来做这种事情。在你的控制器中,你应该评估你的条件来确定你想要显示的页面部分,然后将结果传递到视图中。然后,您可以在视图中使用这些信息,在页面底部添加一小段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

你可以有浏览器滚动到一个位置通过在链接到页面的url中包含片段部分来减少页面。例如http://example.com/index.html#section3将使用'id'section3将页面滚动到元素。您可以在链接,段落等上使用该ID,浏览器将确保该元素在渲染后可见。

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

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

或者,如果你想成为真正看中的(推荐),您可以动画滚动顶部像这样:

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