![](/img/trans.png)
[英]Is there anyway to use a public/index.html for non-logged in users, but then home#index for logged in - in Rails 3?
[英]How to set a home page for logged in users and non logged in users?
我將如何在Rails應用程序中進行設置,以便如果首次訪問我的網站www.example.com的用戶看到的頁面可以登錄,但是如果已經登錄www.example.com的用戶現在可以顯示其登錄信息,擁有自己的帖子,但仍使用相同的www.example.com網址。
如果他們已登錄,或者是否有其他方法可以執行基於渲染模板的操作?
您可以將users#home設置為根URL:
def home
if logged_in?
@blogs = current_user.blogs
render :action => 'logged_in'
else
render :action => 'non_logged_in'
end
end
app / views / users文件夾中有2個文件:logging_in.html.erb和non_logged_in.html.erb
這取決於您如何進行登錄邏輯
通常,您應該執行兩個操作,一個用於家庭/登錄表單,另一個用於用戶在家登錄。 您可以在應用程序控制器上創建一個before_filter ,以便可以測試用戶是否已登錄,然后將其重定向到家(注銷)。
如果您不使用自己的代碼或其他解決方案,我想向您推薦這個叫做devise的 gem,它本身實現了很多登錄邏輯,並且也很容易更改。
編輯:我認為此解決方案比提出的其他解決方案要好,我沒有放置代碼(盡管它與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
該解決方案非常有效,因為它可以測試用戶是否在他嘗試訪問的每個控制器/操作中登錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.