2013-05-30 36 views
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> 

如果我點擊鏈接,它會創建一個包括hashtag localhost:3000/#topcontributors的URL如果我再刷新頁面,包括hashtag消失localhost:3000/topcontributors留下不存在的路線,產生錯誤。這是在鉻,火狐,Safari瀏覽器相同的問題。

回答

4

實際的語法如下:

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

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

+0

謝謝,但無法運作。這不是移動頁面,它創建一個URL'HTTP://本地主機:3000 /#%23link' – BrainLikeADullPencil

+0

有一個額外的''#字符。請檢查更新後的答案。 – depa

+0

好的,謝謝,它可以工作,但仍然存在與硬編碼錨點相同的問題(在OP中描述)。它創建一個URL'本地主機:3000 /#link',如果有一個頁面刷新,成爲'本地主機:3000/link',其中,如果有一個頁面刷新,創建一個沒有匹配的路由錯誤('本地主機:3000/link')。你知道如何避免這種情況嗎? – BrainLikeADullPencil