在我的 Rails 应用程序的长主页上,我在顶部附近有一个链接,在底部附近有一个锚点,它会将用户带到该网站的假想顶级贡献者列表。
关联
<a href="#link" class="bb-url">Top Contributors</a>
锚
<a name="link"></a>
这样做的问题是,一旦单击,它会创建一个 url http://localhost:3000/#link
,然后,如果用户刷新页面,则该链接变为 http://localhost:3000/link
,然后No route matches [GET] "/link"
如果用户再次刷新页面,我会收到错误消息。不仅存在功能问题(站点中断),#link 有点难看,但这可能是可以避免的。
对 Rails 提供的内容感兴趣,我尝试使用 Rails:anchor
选项创建相同的内容
<%= link_to('Top Contributors', root_path, :anchor => '#link') %>
然而,这并没有以几种不同的方式起作用。首先,它触发了整个页面刷新,然后它甚至没有把我带到锚点!显然我错误地使用了 Rails 锚,但是 html 版本有它自己的问题(在我使用它的方式上)。
你能解释一下最好的方法吗?
**Update:**
找到了创建锚点的语法,但问题仍然存在
<%= link_to('Top Contributors', root_path(:anchor => 'topcontributors')) %>
<a name="topcontributors"></a>
如果我单击链接,它会创建带有主题标签的 urllocalhost:3000/#topcontributors
如果我然后刷新页面,主题标签会消失localhost:3000/topcontributors
,留下一条不存在的路线,从而产生错误。在 chrome、firefox、safari 中也是同样的问题。