锚标记不会创建路由匹配错误

时间:2013-05-30 15:21:05

标签: ruby-on-rails

在我的Rails应用程序的长主页上,我在顶部附近有一个链接,在底部附近有一个锚点,这会将用户带到网站虚构的顶级贡献者列表中。

链接

<a href="#link" class="bb-url">Top Contributors</a>

<a name="link"></a>

这样做的问题是,点击后,它会创建一个网址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>

如果我点击链接,它会创建带有#{1}}标签的网址。如果我刷新页面,主题标签将消失localhost:3000/#topcontributors,留下不存在的路由,从而产生错误。这与chrome,firefox,safari中的问题相同。

1 个答案:

答案 0 :(得分:4)

实际语法如下:

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

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