代码之家  ›  专栏  ›  技术社区  ›  Raphomet

在Rails中呈现后向下滚动页面

  •  1
  • Raphomet  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 9 年前
        1
  •  3
  •   Daniel    15 年前

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

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

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

    或者,如果您想变得非常花哨(推荐),可以按如下方式设置滚动顶部的动画:

    $("body").animate({scrollTop: $("#my-element").position().top},1000);
    
        3
  •  0
  •   Vitaly Kushner    15 年前

    通过在链接到页面的url中包含一个片段部分,可以让浏览器滚动到页面下方的某个位置。例如 http://example.com/index.html#section3 将滚动页面至具有“id”节3的元素。可以在链接、段落等上使用该id。浏览器将确保渲染后元素可见。