我有一个博客应用程序,其帖子可以通过posts控制器中的vote
操作接收投票。 因为我允许在投票之后进行投票,所以我在redirect_to :back
之后进行投票,如下所示。如何将锚点添加到redirect_to:back
def vote
# voting logic goes here
redirect_to :back
end
这会将我重定向到正确的页面,但我希望重定向到页面内的特定帖子。要做到这一点,我添加了一个识别锚点到我的帖子部分div。
<div id="post_<%= post.id %>">
<%= post.content %>
</div>
如何在我的redirect_to :back
中参考?我试着下面,这是行不通的。
# this doesn't work!
redirect_to :back, anchor: "post_#{@post.id}"
另外,如果我要使用if子句的显示和索引视图,我该怎么做?我试了下面,它返回undefined method 'current_page' for VocabsController
。
#this doesn't work!
if current_page?(posts_path)
redirect_to posts_path(anchor: "post_#{@post.id}"
else
redirect_to @post
end
嗨@Kevin。感谢您的意见。看起来我的第一个选择(使用':back')将不起作用,因为它不会接受锚点。第二个选项(使用if子句)似乎没问题,并且view_context方法起作用。我会怎么说,“如果你在索引页面投了一个帖子”?使用'current_Page?(posts_path)'不起作用,可能是因为它在不同的操作中被调用(即不是索引操作)。我怎么能说,“如果我投票在索引页上的帖子,重定向到索引页上的该帖子,否则重定向到该帖子的显示页面” – umezo
我认为你想要做的不是使用重定向用户,但实际上让用户对帖子投票而不被重定向到任何地方(留在他投票的同一页面上)。 所以我的建议是使用一个简单的ajax链接:它在不改变用户的当前视图的情况下执行给定的方法。 编辑:这里是您需要的代码 '<%= link_to_function“投票”,“$ .ajax({type:'GET',url:'/ your_controller/voteup /'})”%>' –
好点子。这或多或少是我所做的。感谢您的意见。 – umezo