2011-07-22 4 views
6

Railsのリダイレクト

ユーザーは、彼らがログインしていない/写真に移動しようとする場合は2.3.11にログインした後、元の宛先に、彼らは[site]/admin/login?route=[site]/photosに向けられています。彼らがログインした後、デフォルトのホームページの代わりに「ルート」に定義されたものに送信されたいと思います。 /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 

"*" エドラインが正しく動作しないものです。パラメータを見るためにチェックすると:ルートはそれらの間にないので、引数はログインポストで渡されていません。誰も私にそれがなぜではなく、どのようにそれを修正できるかを説明することができますか?

ありがとうございました!あなたが何か行うことができ

答えて

3

:それはトリックを行う必要がありますように

session[:return_to] ||= request.referer 
+1

がhttp://stackoverflow.com/questions/2139996/ruby-on-rails-redirect-toback – Swift

+0

を見てくださいこれが見えますしかし、私はまだRailsでかなり新しくなっていますので、どこに置いてほしいのですか?アプリケーションコントローラ(ログインページにログインしていない訪問者をリダイレクトする)または上に掲載されたメソッドのどこかに入りますか?ありがとう! – Benjin

+1

ありがとうございます。それは働いた(一度私がそれを考え出した)! 'DEF LOGGED_INない限り を承認 : 認証方法に指示しbefore_filterを持っている:私はやってなってしまったものを他のすべてについて が、これはでしたか? セッション[:original_target] = request.request_uri フラッシュ[:告知]ユーザを認証した後、私のログインコントローラで続い= "あなたは、そのページを閲覧するにはログインする必要があり、" redirect_toのHOME_URL 終了 end' 、、、セッション[:original_target]に何かが格納されているかどうかを確認し、存在する場合はそれに進みます。 – Benjin