2

如果您在未登錄時轉到Twitter.com,您將看到登錄&註冊字段的營銷頁面。Twitter如何根據登錄信息獲取兩個不同的主頁? - Rails 3.1

但是,如果您在登錄時去那裏,則會看到您的Twitter處理的活動流。

我知道在Rails中做到這一點的一種方法是爲登錄用戶提供home/index,並且只需使用public/index.html作爲營銷網站。但Twitter沒有使用public/index.html,所以我想知道他們是如何做到的?

它只是一個簡單的情況下有一個根路由,但然後根據用戶是否登錄顯示兩個不同的頁面的if語句?

或者還有其他一些更奇特的路由技巧,我可以用它來做到這一點?

如果它只是一個if-statement,這似乎有點哈克...不?

謝謝。

+1

爲什麼你覺得用一個'if'語句來檢測登錄的用戶做一些不同的是哈克? –

+0

@ John-Topley,因爲它感覺就像我使用'views'來解決'routing'問題 - config/routes.rb應該解決這個問題。被選擇的答案給了我我正在尋找的信息...該博客的確確實證實了我的懷疑,認爲視圖和控制器路由確實看起來很詭異。 – marcamillion

+0

我可以看到你來自哪裏,但條件邏輯將在控制器中(而不是視圖)。控制器負責處理用戶輸入和查看選擇,所以我沒有看到它的問題。雖然接受的答案是一個優雅的解決方案。 –

回答

3
+0

這太棒了。謝謝。無論如何,你是否會知道Twitter如何能夠通過URL中的用戶名進行導航?我在這裏問過這個問題,但是我有很多問題(請參閱我的意見回答) - http://stackoverflow.com/questions/7297231/how-do-i-get-the-format-of-my-urls-將要戶名控制器-ID-在護欄-3-1 – marcamillion

1

可以某種重定向在用戶不同的控制器沒有登錄,用戶會話的檢查可以在的before_filter

3

完成通過處理特定路線呈現具有相應的名稱(視圖默認控制器方法home/index路徑鏈接到主控制器和索引操作,然後在app/views/home文件夾中呈現視圖index.html.erb)。

但是,在處理根請求的控制器方法內,您可以根據用戶登錄或不登錄的情況簡單地呈現不同的視圖。

你可能有這樣的事情:

class HomeController 
    def index 
    ... 
    if user_logged_in? 
     render "logged_in_user" 
    # else it will render the index view by default 
    end 
end 

在這種情況下,「LOGGED_IN_USER」將是從應用/視圖/家不同的視圖(模板或html.erb文件)夾。

欲瞭解更多信息,看看這裏:Rails rendering guide

相關問題