Rails,button_to和link_to,remote:true单击时滚动页面

时间:2014-05-06 02:23:05

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4

所以我在页面底部有一个div。 button_to和link_to的以下代码可以正常工作,但是当我点击它们时它会向上滚动到页面顶部。

关于如何防止这种情况的任何想法,ajax加载很好但是在进行ajax调用时它不需要移动屏幕

<%= button_to reports_path, class: 'btn btn-info btn-sm', remote: true do %>
  <i class="fa fa-calendar"></i> By Cumulative</button>
<% end %>

<%= link_to 'My Link', reports_path, remote: true %>

2 个答案:

答案 0 :(得分:2)

这种行为属于HTML / JS(不是Rails)

的范围

典型的情况是你使用旧的# href参数,这样当你点击链接时你就不会加载任何其他页面,这基本上会告诉你的浏览器滚动到页面的顶部(像这样):

<%= link_to "test", "#", remote: true %>

当您使用特定链接时,我会猜测问题是:

  
      
  1. 您未正确附加收到的数据
  2.   
  3. 您的页面上有一个锚点,点击了
  4.   

我首先要确保您的链接没有链接到您网页上的任何锚点。如果您有这样的参考:#any_anchor,您应该将其更改为其他内容,或者我们会创建一个变通方法。我认为这不是问题

其次,我会查看您从Ajax调用的数据。你提到graph - 你是如何在页面上处理它的?如果您要在网页上添加大量元素,最终可能会产生类似于您所看到的效果


您能分享一下您期待的数据吗?以及你用来处理它的代码?

答案 1 :(得分:0)

如果它跳回到屏幕顶部,听起来就像你正在重新加载页面一样。 Mohamad是正确的,你会想要像他描述的那样阻止默认操作,但是你需要在执行ajax请求之后这样做。

试试这个:

$(document).ready(function() { $(".btn-sm").on("ajax:success", function(e, data, status, xhr) { e.preventDefault(); }); });