簡體   English   中英

更改密碼后將用戶引導至用戶#show

[英]Route user to users#show after devise password change

當我的用戶登錄時,我希望他們默認使用自己的“顯示”頁面,因為我不希望看到用戶列表。 為此,我更改了默認的after_sign_in,如下所示:

def after_sign_in_path_for(resource)
    user_path(current_user)
end

效果很好。 更改密碼后出錯。 我需要修改根路徑,以便在更改后進入顯示頁面

root :to => "users#show"

..但是現在,顯然,我沒有:id,所以我得到了

ActiveRecord::RecordNotFound in UsersController#show

Couldn't find User without an ID

...很有意義。 我正在使用devise隨附的控制器,所以我的問題是,如何掛鈎密碼更改並將用戶發送到其顯示頁面? 我應該能夠編輯def show說

def show
    @user = User.find(params[:id]) || current_user

還是我需要修改我的

root :to => "users#show"

以反映current_user的ID,假設devise自動將用戶重新登錄...。還是從未注銷過用戶...?

謝謝

你是這樣做的;

首先,更新您的路由文件以使用Devise的狀態,以便對身份驗證的用戶進行不同的處理

authenticated :user do
  root :to => "users#show"
end
unauthenticated :user do
  devise_scope :user do 
    get "/" => "devise/sessions#new"
  end
end

現在確保在發生user#show時,將查找current_user並用於解決users#show沒有:id的事實

def show
if params[:id].nil? # if there is no user id in params, show current one
  @user = current_user
else
  @user = User.find(params[:id])
end

都很好!

謝謝

暫無
暫無

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

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