2009-04-16 38 views
36

我試圖爲我的博客上的每條評論創建唯一的錨點,以便一個人可以將錨點的URL並將其粘貼到瀏覽器中會自動加載頁面並向下滾動到他們評論開始的頁面中的點。如何在Ruby on Rails中創建錨點並重定向到此特定錨點

也許我這樣做是錯誤的方式,但我試過這是無濟於事。

評論觀點 - 故障1 - 在瀏覽器中粘貼時,這個鏈接不向下滾動到所需的位置

<%= link_to '#', :controller => 'posts', :action => 'show', :id => comment.post, :anchor => 'comment_' << comment.id.to_s %> 

評論控制器 - 失敗2 - 在瀏覽器中正確的網址,但沒有滾動發生,它只是停留在頁面

redirect_to :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_' + @comment.id.to_s 

的頂部。如果有人可以幫助我會非常感激:)

UPDATE:下面的方案差不多的工作,但是我出來與下面的網址,如果我點擊它並沒有被滾動到。

# 即http://localhost:3000/posts/please-work

+0

爲了做到畫面滾動網址必須指定您希望它滾動。要做到這一點,你必須在你的url結尾處有一個#comment_123。 「#」之後的文本需要與錨標記中的「name」屬性的值匹配。您的更新中的網址不會因缺少#而滾動。 – vrish88 2009-04-16 21:43:55

+0

是的,我試過了 - 它沒用! 打開了:錨創建此網址 # 但使用:其命名爲改變這一點,正如你說的是我後。任何想法爲什麼這是這種情況? # Damian 2009-04-16 21:52:45

+0

哦,好吧,我明白了。對困惑感到抱歉。我更新了我的答案,但看起來您必須手動將錨點連接到url的末尾。否則,link_to標籤認爲:anchor是一個html屬性。希望這有效:) – vrish88 2009-04-16 22:02:46

回答

5

看起來你要使用的link_to代碼,你在你的問題都有。然後在您的評論列表中,您必須確保鏈接中有一個名稱相同的錨定標記。

所以這樣的:

<%= link_to 'Your comment', post_path(@comment.post) + "#comment_#{@comment.id.to_s}" %> 

將產生否則的link_to方法認爲,像這樣

<a href="localhost:3000/posts/2#1comment_234">Your comment</a> 

/* html code */  

<a name="comment_1234">This is a comment</a> 

你必須在#comment_手動釘:要傳遞錨屬性是爲那個標籤。

0

試試這個:

<%= link_to '#', post_path(comment.post), :anchor => "comment_#{comment.id}" %> 
-1

這些鏈接會向下滾動到位置,你有這樣的代碼:

<a name="comment_1"></a> 

我不知道是否有助手會爲你做它,但它是非常簡單的,你可以寫你的擁有。

1

這裏有@ XGamerX的回答有所改善。

<%= link_to '#', [comment.post, { anchor: dom_id(comment) }] %> 

或者

<%= link_to '#', post_path(comment.post, anchor: dom_id(comment)) %> 
0

這是最好的辦法:

<%= link_to '#', post_path(comment.post, anchor: dom_id(comment.id)) %>