2011-06-22 12 views
2

初めてのユーザーが自分のサイトwww.example.comにアクセスすると、サインインできるページが表示されますが、すでにログインしているユーザーがwww.example.comにアクセスするようにするにはどうすればよいでしょうか自分の投稿を表示しますが、同じwww.example.comのURLに表示されます。ログインしているユーザーとログインしていないユーザーのホームページを設定するにはどうすればよいですか?

ログインしている場合、またはこれを行う他の方法がある場合は、テンプレートベースのレンダリングのようなことをしますか?

答えて

3

あなたはルートURLであることをユーザー#ホームを設定することができます。

がUserController: logged_in.html.erb & non_logged_in:

def home 
    if logged_in? 
    @blogs = current_user.blogs 
    render :action => 'logged_in' 
    else 
    render :action => 'non_logged_in' 
    end 
end 

アプリ/ビュー/ユーザーフォルダ内の2つのファイルを持っています.html.erb

それはあなたがHO用の2つのアクション、1を持っている必要があり通常

ロジック

であなたのログを作っている方法によって異なり
0

私/ログインフォームと別のユーザーが家にログインしています。あなたのアプリケーションコントローラにbefore_filterを作ることができるので、ユーザがログインしているかどうかをテストし、そうでなければ彼を家に戻す(ログアウトする)ことができます。

独自のコードや他のソリューションを使用していない場合は、という名前のこの宝石をお勧めしたいと思います。それは多くのログインロジックを実装しており、変更も簡単です。

EDIT:

:私はこの解決策を提示し、(それがbefore_filterリンクの全く同じコードですが)私は、コードを入れていない他のものよりも優れているので、ここにあるだと思います
class ApplicationController < ActionController::Base 
    before_filter :require_login 

    private 

    def require_login 
    unless logged_in? 
     flash[:error] = "You must be logged in to access this section" 
     render :controller => 'home', :action => 'not_logged_in' 
    else 
     # whatever code you need to load from user 
     render :controller => 'home', :action => 'logged_in' 
    end 
    end 

end 

このソリューションは、ユーザがコントローラ/アクションにアクセスしようとするたびににログインしているかどうかをテストするため、完全に機能します。

+0

を定義するときにadvanced constraintを使用しています。ありがとうございました。私は今すぐ考案しています。 – Kevin

1

偉大な記事は、スティーブリヒェートによって書かれました。彼はsee here

+0

この記事は実際にはかなり面白いです。ブログは優れているようで、リソースのおかげです。 – Kevin

関連する問題