簡體   English   中英

Rails條件重定向

[英]Rails conditional redirect

我正在嘗試為新用戶設置重定向到幫助頁面的方式,類似於堆棧溢出在新用戶嘗試提出新問題時提出如何詢問頁面的方式。

PostsController

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

問題是,類似於Stack Overflow,我在幫助頁面上有一個“進入新帖子”按鈕,該按鈕返回到posts#new,然后又返回到幫助頁面,因為current_user.posts_count仍然<5。

用戶進入幫助頁面后,如何繞過重定向?

根據我的閱讀,有兩種解決方法:

1.在視圖中使用link_to_if

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

不幸的是,這使用戶可以通過直接鍵入URL來繞過幫助頁面。

2.在數據庫中使用建議計數器緩存

if current_user.advices_count < 5

並在用戶訪問幫助頁面時增加計數。 我不確定這是最好的方法。

因此,我需要一種方法。1.將新用戶重定向到幫助頁面。2.閱讀幫助頁面后,用戶可以直接回到posts#new而不進行重定向。

有什么想法嗎?

使用request.referer 因此,在您的控制器中進行如下更改:

if URI(request.referer).path != newbieadvice_path && current_user.posts_count < 5
  1. 在幫助頁面中生成一個隨機令牌,並將此令牌作為參數添加到“進行到新帖子”鏈接中,然后查看您的帖子控制器,對此令牌進行驗證。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM