如何在Rails中使用带有锚点的Ajax链接

时间:2018-06-11 13:17:00

标签: javascript ruby-on-rails ruby ajax

我试图创建一个使用AJAX在页面之间切换的导航面板,并且可以链接到Rails 5.1应用程序中这些页面上的锚点。

根据我的阅读,以下代码应该有效,但不是。

<%= link_to @section.title, from_nav_path(@topic, anchor: @section.css_id), remote: true %>

(如果尚未明确,主题has_many部分和部分belongs_to主题)

我已经阅读了this stackoverflow帖子,以及这两个参考页面(api docmix and go)。

如果未将其设置为remote: true,则可以通过show操作正常运行,但我不想重新加载该页面。

目前,它确实更改为正确的页面,但它只是停留在页面的顶部,而不是跟随锚点。我缺少什么让这项工作?

我还尝试独立地联合添加一个javascript回调到要加载的部分和from_nav.js.erb文件。一切都无济于事。

1 个答案:

答案 0 :(得分:1)

您不能将锚选项与远程使用。锚是一段文本,标记超文本链接的开头和/或结尾。但remote是Rails中的一个辅助方法,它添加到标记data-remote="true"属性,然后Rails知道需要发送XHR请求。锚定不使用XHR请求。因此,您可以在from_nav.js.erbscroll to the element

中添加javascript
var elmnt = document.getElementById("<%= @section.css_id %>");
elmnt.scrollIntoView();