簡體   English   中英

Rails 3-在登錄后,Devise重定向到表單

[英]Rails 3 - Devise redirects to form after sign_in

在博客應用程序中,我希望每個用戶都訪問一個表單以發表評論。

用戶提交評論表單時,如果未登錄,他將被重定向到Devise sign_in表單。

before_filter :authenticate_user!, :except => [:index, :show, :new]

用戶一旦登錄,我如何將他重定向到評論表單並填寫所有字段?

提前致謝

如果要在每次登錄后讓用戶評論表單,請添加ApplicationController:

#after_sign_in_path_for is called by devise
def after_sign_in_path_for(resource_or_scope)
  comment_path...
end

如果要在登錄之前將用戶帶回到他們所在的頁面,可以將當前的controller + action保存在會話中並重定向回:

session[:pre_login_controller] = params[:controller]
session[:pre_login_action] = params[:action]

接着 :

def after_sign_in_path_for(resource_or_scope)
  if session[:pre_login_controller] && session[:pre_login_action]
    "#{session[:pre_login_controller]}/#{session[:pre_login_action]}"
  else
     some default path -- root url or comment path etc
  end
end

Devise登錄后,Stack Overflow上突出顯示了多種解決方案,用於重定向到先前的URL。

這可能是最合乎邏輯的解決方案,並且還有一個包含CanCan的解決方案(我建議使用)

Rails:Warden / Devise-如何在登錄/失敗訪問之前捕獲URL

至於填寫表格,我認為一個簡單的解決方案是首先限制評論框。 檢查用戶是否已登錄(我認為在Devise中是user_signed_in?)以及user_signed_in? 否則“您必須link_to登錄才能發表評論”。 如果您在#new之類的操作中包含注釋,則可以通過設計限制整個新操作。 為此,在認證“ except”中擺脫您的:new。

暫無
暫無

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

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