Redirect ke rel halaman saat ini

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!


person user2136807    schedule 11.07.2013    source sumber


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.

person Chris Heald    schedule 11.07.2013

Di Rails 5, Anda harus menggunakan redirect_back dan menambahkan jalur cadangan:

redirect_back(fallback_location: root_path)
person ann    schedule 19.09.2017

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

person Erfan Sh.z.    schedule 11.07.2013
comment
Masalahnya adalah saya ingin jalur 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
comment
dan apakah Anda memiliki formulir masuk di tampilan lain atau di bilah yang Anda sebutkan? - person Erfan Sh.z.; 11.07.2013
comment
Itu terletak di bilah navigasi, sehingga berada di tata letak aplikasi - person user2136807; 12.07.2013
comment
Saya belum mencobanya tetapi seperti yang Anda tahu, Anda dapat merender file .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
person brntsllvn    schedule 08.08.2015

redirect_back inilah yang berhasil bagi saya:

redirect_back fallback_location: root_path
person stevec    schedule 18.06.2021