Saya memiliki formulir masuk di bilah navigasi aplikasi saya dan saya bertanya-tanya apakah ada cara mudah untuk mengalihkan sign_in ke halaman apa pun yang saat ini Anda buka saat Anda masuk. Terima kasih!
Redirect ke rel halaman saat ini
Jawaban (5)
Anda bisa redirect_to(:back)
, selama referensi diberikan. Namun, saya sarankan Anda melihat jawaban ini, sebagai solusinya disajikan di sana akan tahan terhadap hal-hal seperti login yang gagal dan pengalihan OAuth.
Di Rails 5, Anda harus menggunakan redirect_back
dan menambahkan jalur cadangan:
redirect_back(fallback_location: root_path)
Jika Anda telah menulis kode untuk membuat sesi untuk pengguna Anda, cukup tambahkan baris ini setelah itu di session_controller Anda:
redirect_to root_url, :notice => "Logged in!"
di sini alih-alih root_url Anda dapat memasukkan jalur apa pun yang Anda inginkan untuk mengarahkan pengguna. namun pastikan Anda memilikinya di routes.rb
dan jika Anda mempertimbangkan kegagalan proses masuk, Anda dapat menggunakan metode render
untuk memuat ulang tampilan proses masuk Anda
redirect_to
berubah berdasarkan tempat pengguna yang tidak masuk saat ini berada di situs. Bilah navigasi terlihat di setiap halaman jadi misalnya, jika pengguna berada di halaman Beranda saat mereka masuk, saya ingin sessons_controller menjalankan reidrect_to home_path
atau jika mereka berada di halaman pengguna saat mereka masuk, saya ingin menjalankannya redirect_to user_page
- person user2136807; 11.07.2013
.json
di pengontrol Anda. jadi Anda perlu menulis fungsi javascript untuk memuat ulang halaman dan merender file itu di pengontrol Anda. Sesuatu seperti location.reload()
- person Erfan Sh.z.; 12.07.2013
Solusi ini dari orang-orang Rancangan ini akan berhasil...
Di ApplicationController
tulis yang berikut ini:
after_filter :store_location
def store_location
# store last url - this is needed for post-login redirect to whatever the user last visited.
return unless request.get?
if (request.path != "/users/sign_in" &&
request.path != "/users/sign_up" &&
request.path != "/users/password/new" &&
request.path != "/users/password/edit" &&
request.path != "/users/confirmation" &&
request.path != "/users/sign_out" &&
!request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end
def after_sign_in_path_for(resource)
session[:previous_url] || root_path
end
redirect_back
inilah yang berhasil bagi saya:
redirect_back fallback_location: root_path