【发布时间】:2010-10-19 23:07:32
【问题描述】:
我正在尝试为我博客上的每条评论创建唯一的锚点,以便人们可以获取锚点的 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,如果我点击它就不会滚动到它。
【问题讨论】:
-
为了进行屏幕滚动,url 必须指定您希望它滚动到的位置。为此,您必须在您的网址末尾添加一个#comment_123。 '#' 之后的文本需要与锚标记中的 'name' 属性的值匹配。由于缺少#,更新中的 url 不会滚动。
-
哦,好的,我明白了。对困惑感到抱歉。我更新了我的答案,但看起来您必须手动将锚点连接到 url 的末尾。否则 link_to 标签认为 :anchor 是一个 html 属性。希望这有效:)
-
是的,这就是我最终所做的。感谢您帮助我到达那里:)
-
您可以像这样添加锚点:post_path(@post, :anchor => "some_text")。只需将锚点作为参数传递给 post_path,而不是 link_to。
标签: ruby-on-rails ruby hyperlink anchor page-jump