私は、ポストコントローラで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}"
また、showとindexのビューに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'を使う)は動作しません。なぜなら、アンカーを受け入れないからです。 2番目のオプション(if節を使用)は、okと思われ、view_contextメソッドが機能します。 「インデックスページの投稿に投票した場合はどうすればいいですか? 'current_Page?(posts_path) 'を使うと、おそらく別のアクション(つまり、インデックスアクションではない)内で呼び出されているため、動作しません。 「インデックスページの投稿に投票し、インデックスページのその投稿にリダイレクトし、そうでなければ、その投稿の表示ページにリダイレクトする」と言うことができます。 – umezo
あなたがしたいことは、リダイレクトするアクションを使用しないことです実際にユーザーはどこにでもリダイレクトされることなく(投票された同じページにとどまることなく)投票に投票します。 私は、単純なajaxリンクを使用することを勧めます。つまり、ユーザーの現在のビューを変更せずに所定のメソッドを実行します。 編集:ここにコードがあります '%% link_to_function" $ {JAX({タイプ: 'GET'、url: '/ your_controller/voteup /'}) "%>' –
いい視点ね。それは多かれ少なかれ私がやったことです。入力いただきありがとうございます。 – umezo