在博客應用程序中,我希望每個用戶都可以訪問表單以發表評論。Rails 3 - 在sign_in後設計重定向形式
當用戶提交他被重定向到設計sign_in形式,如果沒有登錄評論表單。
before_filter :authenticate_user!, :except => [:index, :show, :new]
我怎麼可能,一旦用戶sign_in,重定向他的評論表單並填寫所有領域?
在此先感謝
在博客應用程序中,我希望每個用戶都可以訪問表單以發表評論。Rails 3 - 在sign_in後設計重定向形式
當用戶提交他被重定向到設計sign_in形式,如果沒有登錄評論表單。
before_filter :authenticate_user!, :except => [:index, :show, :new]
我怎麼可能,一旦用戶sign_in,重定向他的評論表單並填寫所有領域?
在此先感謝
如果你想利用用戶在每一個符號後發表評論的形式,加入的ApplicationController:
#after_sign_in_path_for is called by devise
def after_sign_in_path_for(resource_or_scope)
comment_path...
end
如果你想利用用戶返回到他們在登錄之前的頁面,你可以保存電流控制器+會話的行動和重定向回:
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
有多種解決方案,強調對堆棧溢出的設計登錄後重定向到以前的URL。
這可能是最合理的解決方案,並且也包括康康舞(我建議使用)溶液
Rails: Warden/Devise - How to capture the url before login/failed access
至於在表格填充,我想一個簡單的解決辦法是首先限制評論框。檢查用戶是否登錄(我認爲在設計它的user_signed_in?),如果user_signed_in?其他「你必須link_to登錄才能發表評論」。如果您在諸如#new之類的操作中收到評論,則可以通過設計限制整個新操作。爲此,請除去您的:認證中的新內容'除外'。
我混你的S解決方案和Warden :: Manager.before_failure,它非常棒! – invaino 2011-04-20 08:13:34