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

时间:2009-04-14 23:32:06

标签: ruby-on-rails scroll controller

有没有办法在渲染后滚动或跳下页面?

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

也许我需要以某种方式使用JavaScript(Prototype),但是一旦页面加载完毕,我不知道如何调用该函数,尤其是来自控制器。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

如果您使用的是jQuery,答案可能如下:

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

或者如果你想要真正的花哨(推荐),你可以像这样动画滚动顶部:

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

答案 2 :(得分:0)

您可以通过在链接到该页面的URL中包含片段部分,将浏览器滚动到页面下方的位置。例如http://example.com/index.html#section3会将页面滚动到带有“id”section3的元素。您可以在链接,段落等上使用该ID。浏览器将确保在呈现后元素可见。