0

在我的 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 中也是同样的问题。

4

1 回答 1

4

实际语法如下:

<%= link_to('Top Contributors', root_path(:anchor => 'link')) %>

来源:http ://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

于 2013-05-30T15:24:30.563 回答