मेरे पास एक ब्लॉगिंग एप्लिकेशन है जिसमें पोस्ट्स नियंत्रक में vote
कार्रवाई के माध्यम से वोट प्राप्त कर सकते हैं। क्योंकि मैं सूचकांक दोनों में वोटिंग की अनुमति देता हूं और विचार दिखाता हूं, वोट के बाद, redirect_to :back
नीचे दिया गया है।रीडायरेक्ट_to पर एक एंकर कैसे जोड़ें: वापस
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}"
वैकल्पिक रूप से, यदि मैं शो और इंडेक्स दृश्यों के लिए कोई खंड का उपयोग करना चाहता था, तो मैं यह कैसे कर सकता हूं? मैंने नीचे की कोशिश की, जो 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' का उपयोग करके) काम नहीं करेगा, क्योंकि यह एंकर स्वीकार नहीं करेगा। दूसरा विकल्प (अगर खंड का उपयोग कर रहा है) ठीक लगता है, और view_context विधि काम करता है। मैं कैसे कहूंगा, "अगर आपने इंडेक्स पेज पर एक पोस्ट के लिए वोट दिया"? 'Current_Page का उपयोग करना? (Posts_path)' काम नहीं करता है, शायद इसलिए कि इसे किसी भिन्न क्रिया (यानी इंडेक्स एक्शन नहीं) के भीतर बुलाया जाता है। मैं कैसे कह सकता हूं, "अगर मैं इंडेक्स पेज पर एक पोस्ट के लिए वोट देता हूं, तो इंडेक्स पेज पर उस पोस्ट पर रीडायरेक्ट करें, अन्यथा उस पोस्ट के शो पेज पर रीडायरेक्ट करें" – umezo
मुझे लगता है कि आप जो करना चाहते हैं वह है कि उसे रीडायरेक्ट करने वाली कार्रवाई का उपयोग न करें उपयोगकर्ता लेकिन वास्तव में उपयोगकर्ता को कहीं भी रीडायरेक्ट किए बिना पोस्ट के लिए वोट देना पड़ता है (उसी पृष्ठ पर रहना जहां उसने मतदान किया)। तो मेरी सलाह एक साधारण AJAX लिंक का उपयोग करना है: यह उपयोगकर्ता के वर्तमान दृश्य को बदले बिना दिए गए विधि को निष्पादित करता है। संपादित करें: यहां वह कोड है जिसकी आपको आवश्यकता होगी '<% = link_to_function" वोट दें "," $ .ajax ({type: 'GET', url: '/ your_controller/voteup /'}) "%>' –
अच्छी बात। जो मैंने किया वह उतना ही कम है। इनपुट के लिए धन्यवाद। – umezo