我有一個博客應用程序,其帖子可以通過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