Rails 2.3.11Redirect đến đích ban đầu sau khi đăng nhập
Nếu người dùng cố gắng đi đến/ảnh khi họ chưa đăng nhập, họ đang hướng đến [site]/admin/login?route=[site]/photos
. Sau khi họ đăng nhập, tôi muốn họ được gửi đến bất cứ điều gì đã được xác định trong "tuyến đường" thay vì trang chủ mặc định.
Trong /app/controllers/admin_controller.rb:
def login
if session[:user_id] #already logged in
redirect_to ''
@destination = request.url
end
if request.post?
if [authentication code]
if user.activated? #check to see whether the user has activated their account
session[:user_id] = user.id
if params[:route] # ********
redirect_to "#{params[:route]}"
else
redirect_to :controller => 'home'
end
else
flash.now[:notice] = "Your account hasn't been activated yet. Check your emails!"
end
else
flash.now[:notice] = "Invalid email/password combination"
end
end
end
Các "*" dòng ed là một trong đó không hoạt động đúng. Khi tôi kiểm tra để xem các thông số,: tuyến đường không nằm trong số đó, vì vậy đối số không được chuyển vào với bài đăng nhập. Bất cứ ai có thể giải thích cho tôi tại sao nó không phải là và làm thế nào tôi có thể sửa chữa nó?
Cảm ơn bạn!
Có một cái nhìn tại http://stackoverflow.com/questions/2139996/ruby-on-rails-redirect-toback – Swift
này có vẻ như nó nên làm các trick , nhưng tôi vẫn còn khá mới ở Rails, vì vậy bạn có thể vui lòng xây dựng một chút về nơi tôi nên đặt đó? Nó sẽ đi trong bộ điều khiển ứng dụng của tôi (nơi nó chuyển hướng các khách truy cập không đăng nhập vào trang đăng nhập) hoặc ở đâu đó trong phương thức được đăng ở trên? Cảm ơn! – Benjin
Cảm ơn bạn; đã hoạt động (một khi tôi đã tìm ra)! Đối với tất cả những người khác, những gì tôi đã phải làm là: Có một before_filter hướng đến một phương thức ủy quyền: 'def ủy quyền trừ khi logged_in? phiên [: original_target] = request.request_uri đèn flash [: Thông báo] = "Bạn phải đăng nhập để xem trang đó" redirect_to HOME_URL cuối end' Sau đó, trong điều khiển đăng nhập của tôi, sau khi chứng thực người dùng, kiểm tra xem có bất kỳ thứ gì được lưu trữ trong phiên [: original_target] hay không, và nếu có, hãy chuyển đến điều đó. – Benjin