Rails 项目中未定义的设计方法
Devise methods undefined in Rails project
我有一个 Rails 5 应用程序,其中安装了 Devise gem。我的项目是以这样一种方式设置的,所有控制器都被命名空间......甚至设计控制器。
在我的路由文件中我这样做了(这将更好地解释我的命名空间结构):
controllers: {
sessions: "api/v1/public/members/users/sessions",
passwords: "api/v1/public/members/users/passwords",
registrations: "api/v1/public/members/users/registrations",
},
path_names: {
sign_in: 'login',
password: 'forgot',
sign_up: 'register',
sign_out: 'signout'
}
我还设置了设计视图文件以反映所需的命名空间结构。
我在 ApplicationController.rb 中包含了以下内容:
before_action :authenticate_api_v1_public_members_user!
由于我的 Devise 控制器是命名空间的,标准 'before_action :authenticate_user!' 方法需要更新为上面的方法才能工作。
我遇到的问题是 none Devise 辅助方法在我的任何视图中都可用。在视图中调用 'current_user' 或 'user_signed_in?' 时,刷新浏览器时出现 'undefined method' 错误。我也尝试为这些辅助方法命名空间,但无济于事。
更新
模型在我的应用程序中没有命名空间。我正在使用普通的用户模型。只有控制器是有命名空间的,并且结构如上面的路线所示。
有没有人遇到过类似的问题?
Devise 似乎嵌套在您 routes.rb 的 :api_v1_public_members
命名空间中。在这种情况下,它不仅会影响 authenticate_user!
方法,将其更改为 authenticate_api_v1_public_members_user!
,还会影响其他方法。
current_user
转为current_api_v1_public_members_user
user_signed_in?
转为api_v1_public_members_user_signed_in?
这里也有类似的问题undefined method `authenticate_user! Api::PostsController in Devise / Rails 4
我有一个 Rails 5 应用程序,其中安装了 Devise gem。我的项目是以这样一种方式设置的,所有控制器都被命名空间......甚至设计控制器。
在我的路由文件中我这样做了(这将更好地解释我的命名空间结构):
controllers: {
sessions: "api/v1/public/members/users/sessions",
passwords: "api/v1/public/members/users/passwords",
registrations: "api/v1/public/members/users/registrations",
},
path_names: {
sign_in: 'login',
password: 'forgot',
sign_up: 'register',
sign_out: 'signout'
}
我还设置了设计视图文件以反映所需的命名空间结构。
我在 ApplicationController.rb 中包含了以下内容:
before_action :authenticate_api_v1_public_members_user!
由于我的 Devise 控制器是命名空间的,标准 'before_action :authenticate_user!' 方法需要更新为上面的方法才能工作。
我遇到的问题是 none Devise 辅助方法在我的任何视图中都可用。在视图中调用 'current_user' 或 'user_signed_in?' 时,刷新浏览器时出现 'undefined method' 错误。我也尝试为这些辅助方法命名空间,但无济于事。
更新 模型在我的应用程序中没有命名空间。我正在使用普通的用户模型。只有控制器是有命名空间的,并且结构如上面的路线所示。
有没有人遇到过类似的问题?
Devise 似乎嵌套在您 routes.rb 的 :api_v1_public_members
命名空间中。在这种情况下,它不仅会影响 authenticate_user!
方法,将其更改为 authenticate_api_v1_public_members_user!
,还会影响其他方法。
current_user
转为current_api_v1_public_members_user
user_signed_in?
转为api_v1_public_members_user_signed_in?
这里也有类似的问题undefined method `authenticate_user! Api::PostsController in Devise / Rails 4