在我的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瀏覽器相同的問題。
謝謝,但無法運作。這不是移動頁面,它創建一個URL'HTTP://本地主機:3000 /#%23link' – BrainLikeADullPencil
有一個額外的''#字符。請檢查更新後的答案。 – depa
好的,謝謝,它可以工作,但仍然存在與硬編碼錨點相同的問題(在OP中描述)。它創建一個URL'本地主機:3000 /#link',如果有一個頁面刷新,成爲'本地主機:3000/link',其中,如果有一個頁面刷新,創建一個沒有匹配的路由錯誤('本地主機:3000/link')。你知道如何避免這種情況嗎? – BrainLikeADullPencil