我將如何在我的Rails應用程序中設置,以便如果第一次用戶訪問我的網站www.example.com,他們會看到他們可以登錄的頁面,但是如果已經登錄到www.example.com它現在顯示他們自己的帖子,但仍然在同一個www.example.com網址。如何爲已登錄的用戶和未登錄的用戶設置主頁?
我會做類似於基於渲染模板的東西嗎?如果他們已經登錄或者有其他方法可以做到這一點?
我將如何在我的Rails應用程序中設置,以便如果第一次用戶訪問我的網站www.example.com,他們會看到他們可以登錄的頁面,但是如果已經登錄到www.example.com它現在顯示他們自己的帖子,但仍然在同一個www.example.com網址。如何爲已登錄的用戶和未登錄的用戶設置主頁?
我會做類似於基於渲染模板的東西嗎?如果他們已經登錄或者有其他方法可以做到這一點?
您可以設置用戶#家是根網址:
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
這取決於你如何讓你的日誌中的邏輯
通常你應該有兩個動作,一個是豪我/登錄表單和用戶登錄回家。您可以在應用程序控制器上創建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
此解決方案完美地工作,因爲它測試用戶是否登錄每他試圖訪問的控制器/操作。
Steve Richert寫了一篇很棒的文章。當定義路線時,他正在使用advanced constraint,see here
感謝這篇文章其實很有趣。該博客看起來非常棒,感謝資源。 – Kevin
感謝這和我正在調查設計 – Kevin