我使用設計與慘慘/ Rolify一起爲我的Rails應用程序的認證,我有一個很難理解如何通過設計方法的命名空間控制器。未定義的局部變量或方法「CURRENT_USER」的命名空間控制器
我使用標準users
模型和控制器爲我的應用程序的主要部分,那邊的一切運作良好。但是,我已經設置了,如果具有特定role
(在註冊後確定)的帳戶使用主登錄頁面登錄,它將把它們重定向到命名空間視圖和控制器。
讓我們說user_id: 3
登錄並重定向到0.0.0.0/external/dashboard
,重定向後,我可以調用設計的current_user
的dashboard
頁方法,並返回正確的信息。然而,當我爲用戶設置的link_to
能夠在0.0.0.0/external/users/3/edit
我收到以下錯誤編輯他的個人資料:
Started GET "/external/users/3/edit" for 127.0.0.1 at 2017-08-31 21:40:59 -0400
ActionController::RoutingError (undefined local variable or method `current_user' for External::UsersController:Class)
routes
devise_for :users, controllers: { confirmations: 'confirmations', registrations: 'registrations' }
# External routes
namespace :external do
resources :properties, :clients, :orders, :deeds, :mortgages, :users, :owners, :dashboard
end
external/dashboard view
<%= user_name_helper(current_user) %>
user_name_helper
(產生用戶編輯鏈接),當我點擊這個幫手產生的鏈接
def user_name_helper(user)
if user.name.blank?
link_to "Update your profile here.", edit_external_user_path(user)
else
"Hello, #{user.name}"
end
end
錯誤發生。
但是<%= link_to fa_icon("sign-out", text: "Logout"), destroy_user_session_path, method: :delete %>
從0.0.0.0/external/dashboard
正常工作。
所以我很困惑,爲什麼我可以在External::DashboardController
的視圖內調用current_user
,但不能在External::UsersController
內調用它。所有名稱空間控制器都直接從ApplicationController
繼承,我想只保留一個單獨的users model
。我已經搜索了一堆不同的文章,但似乎無法找到類似於我的配置的答案,所以任何人都可以向我解釋我可能會做錯什麼,以及如何讓這個工作以及讓我能夠在我的命名空間視圖中使用任何其他Devise methods
?提前致謝。