在我的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中的问题相同。
答案 0 :(得分:4)
实际语法如下:
<%= link_to('Top Contributors', root_path(:anchor => 'link')) %>
来源:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to