2014-02-20 81 views
0

我正在嘗試爲新用戶設置一個重定向到幫助頁面,類似於當新用戶試圖提出新問題時,堆棧溢出如何提示頁面。Rails條件重定向

PostsController

def new 
    if current_user.posts_count < 5 
     redirect_to newbieadvice_path 
    else 
     @question = Question.new 
    end 
    end 

問題是,類似的堆棧溢出,我有幫助頁面上的「繼續進行新的帖子」按鈕,導致回到崗位#新的,然後循環回幫助頁面,因爲current_user.posts_count仍然是< 5.

一旦用戶在幫助頁面上,我該如何繞過重定向?

從我讀,有兩種方法,我可以去了解它:

1.在視圖中使用link_to_if

<%= link_to_if current_user.posts_count < 5 ... %> 

不幸的是使用戶能夠通過繞過幫助頁面直接輸入網址。

2.使用DB

if current_user.advices_count < 5 

,當用戶訪問幫助頁面增加計數的建議計數器緩存。我不確定這是最好的方法。

所以我需要一種方法來 1重定向新用戶的幫助頁面 2.閱讀幫助頁面的用戶可以繼續回到崗位#新的不重定向

任何想法後?

回答

2

使用request.referer。所以在你的控制器更改如下:

if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5 
+0

我知道這一定很簡單。非常感謝您的快速回復 –

1
  1. 生成的幫助頁面內隨機令牌,並作爲PARAM添加此標記爲「繼續新帖」鏈接,然後內幕您的文章控制器,做記號的驗證。

  2. 檢查http請求頭request.env ['HTTP_REFERER']的「HTTP_REFERER」值,並查看用戶是否來自幫助頁面。

+0

會工作,但Zakwan的代碼更簡單。非常感謝 –