2010-11-20 20 views
0

私はRailsでFacebookアプリケーションを開発しています。一部のページ(すべてではない)は、ユーザーがログインする必要があります。そうでない場合は、「ログイン」ページにリダイレクトされます。リダイレクトはJavascript(親フレームのリダイレクト)で行う必要があるため、redirect_toを使用することはできません。さらに、リダイレクションは最初に要求されたページのアドレスを知る必要があるため、リダイレクトを行うダミーページにリダイレクトすることはできません。Javascript redirect_to in rails

これを実現するためにレイアウトをrenderと一緒に使用しようとしましたが、オリジナルのビューはまだ実行されています(ただし、生成されません)。ビューには、ユーザーがログインしているときにのみ存在する変数が必要なため、エラーが発生してスクリプトがクラッシュします。

レイアウトをレンダリングできますが、ビューの実行を停止することはできますか?これを達成するより良い方法はありますか?

+0

レンダリングしようとしましたか:text => ""? – Bohdan

+0

レンダリング:テキストは完璧に動作します、ありがとう! – error792

答えて

0

ロジックをapplication_controllerのbefore_filterというメソッドに入れて、リダイレクトが必要かどうかを確認できますか?ような何か:

class ApplicationController < ActionController::Base 
    before_filter :authenticate_user! 

    def authenticate_user! 
     if (authentication_required? && !user_authenticated?) 
      render :js => "[some javascript here]" and return 
     end 
    end 

    def authentication_required? 
     # logic to determine if auth is needed 
    end 

    def user_authenticated? 
     # logic to determine if user is authenticated 
    end 
end 

レンダリング:JS => ...あなたが最初に要求ページに戻る必要がある値が何でJavaScriptをレンダリングさせてください(またはあなたには、いくつかの他のファイルまたは任意のテキストをレンダリングすることができます)。