如何在页面中重定向到特定位置?

7

我有一个带有评论功能的博客应用程序。 目前,评论控制器具有标准的创建操作。

def create    
  @comment = current_user.build(params[:comment])
  respond_to do |format|
  if @comment.save
    format.html { redirect_to @comment.post }
  end
end

创建评论后,用户将被重定向到所评论的博客文章页面。如何将重定向位置下移,以便到达新评论所在的位置? posts/show.html.erb
<div id="post_show">
  <%= @post.content %>
  <%= render @post.comments %>
</div>

comments/_comment.html.erb

<div id="comment_partial">
  <%= comment.content %>
</div>

有没有什么我可以添加到我的HTML中,然后在我的控制器中引用?我需要以某种方式“保存”位置吗?感谢帮助新手!

1
如果您的评论容器有唯一的ID,例如<div id="comment_12345">,那么您可以将#comment_12345附加到URL上,这将确保页面上具有IDcomment_12345的任何元素都会滚动到。 - Christopher.Cubells
嗨 @Christopher,当重定向到命名路径时,这对我完美地起作用。然而,我在使用redirect_to:back时遇到了问题,并发布了一个新问题。感谢您的任何回答。https://dev59.com/Y2vXa4cB1Zd3GeqPNuFZ - umezo
1个回答

12
你可以在路径助手中使用anchor选项,例如。
redirect_to post_path(@comment.post, anchor: 'some-id')

感谢@Ahmad。我用<div id="comment_<%= comment.id %>">post_path(@comment.post, anchor: "comment_#{@comment.id}")正是这样做的。 - umezo
嗨@Ahmad,当重定向到命名路径时,这对我非常有效。然而,我在使用redirect_to :back时遇到了问题,并提出了一个新的问题。感谢任何帮助。https://dev59.com/Y2vXa4cB1Zd3GeqPNuFZ - umezo
谢谢,这正是我在寻找的确切答案。 - Jigar Bhatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接