37

ブログのコメントごとに一意のアンカーを作成して、アンカーの URL を取得してブラウザーに貼り付けると、ページが自動的に読み込まれ、ページ内のコメントが始まるポイントまでスクロールダウンされるようにしようとしています。 .

おそらく私はこれを間違った方法で行っていますが、これを試してみましたが、役に立ちませんでした.

コメント ビュー - 不合格 1 - ブラウザに貼り付けた場合、このリンクは目的の位置までスクロールしません

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

コメント コントローラー - 失敗 2 - ブラウザーで URL を修正しますが、スクロールは発生せず、ページの上部にとどまります

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

誰かが助けてくれたら、とても感謝しています:)

更新: 以下の解決策はほとんど機能しますが、クリックしてもスクロールされない次の URL が表示されます。

# すなわちhttp://localhost:3000/posts/please-work

4

6 に答える 6

81

実際、アンカーはパスのオプションであり、link_toのオプションではありません

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

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001565

link_to "Comment wall", profile_path(@profile, :anchor => "wall")
       # => <a href="/profiles/1#wall">Comment wall</a>
于 2009-04-17T11:08:30.963 に答える
5

link_to質問にあるコードを使用したいようです。次に、コメントのリストで、リンクに同じ名前のアンカー タグがあることを確認する必要があります。

したがって、この:

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

このようなものを生成します

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

 /* html code */     

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

そうし#comment_ないと、 link_to メソッドは、渡す :anchor 属性がそのタグ用であると見なします。

于 2009-04-16T20:35:15.210 に答える
1

これは@XGamerXの回答の改善です。

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

または

<%= link_to '#', post_path(comment.post, anchor: dom_id(comment)) %>
于 2014-06-05T17:17:29.507 に答える
0

これを試して:

<%= link_to '#', post_path(comment.post), :anchor => "comment_#{comment.id}" %>
于 2009-04-16T20:34:28.940 に答える
-1

これらのリンクは、次のようなコードがある位置まで下にスクロールします。

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

あなたのためにそれを行うヘルパーがあるかどうかはわかりませんが、それは非常に簡単で、あなた自身のものを書くことができます.

于 2009-04-16T20:41:17.507 に答える