2011-06-22 113 views
2

我將如何在我的Rails應用程序中設置,以便如果第一次用戶訪問我的網站www.example.com,他們會看到他們可以登錄的頁面,但是如果已經登錄到www.example.com它現在顯示他們自己的帖子,但仍然在同一個www.example.com網址。如何爲已登錄的用戶和未登錄的用戶設置主頁?

我會做類似於基於渲染模板的東西嗎?如果他們已經登錄或者有其他方法可以做到這一點?

回答

3

您可以設置用戶#家是根網址:

UsersController:

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

有2個文件在app /視圖/用戶文件夾: logged_in.html.erb & non_logged_in .html.erb

0

這取決於你如何讓你的日誌中的邏輯

通常你應該有兩個動作,一個是豪我/登錄表單和用戶登錄回家。您可以在應用程序控制器上創建before_filter,以便您可以測試用戶是否已登錄,如果沒有,則將其重定向到主頁(註銷)。

如果您沒有使用自己的代碼或其他解決方案,我想向您推薦這款名爲的寶石,它本身實現了很多登錄邏輯,並且很容易更改。

編輯:我覺得這個方案比進行了介紹和我沒有把代碼(雖然它是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

感謝這和我正在調查設計 – Kevin

1

Steve Richert寫了一篇很棒的文章。當定義路線時,他正在使用advanced constraintsee here

+0

感謝這篇文章其實很有趣。該博客看起來非常棒,感謝資源。 – Kevin

相關問題