在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>
答
你可以有浏览器滚动到一个位置通过在链接到页面的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);
这是一个好点!谢谢丹尼尔。 – Raphomet 2009-04-15 01:34:37