在Rails项目中设计未定义的方法
我有一个安装了Devise gem的Rails 5应用程序。 我的项目是以这样的方式设置的,即所有控制器都是命名空间…甚至是Devise控制器。
在我的路由文件中,我已经完成了这个(这将更好地解释我的命名空间结构):
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!’ 方法需要更新到上面的方法才能工作。
我遇到的问题是,我的任何视图都没有提供Devise帮助方法。 调用’current_user’或’user_signed_in?’时 在视图中,刷新浏览器时出现“未定义方法”错误。 我也试过命名这些辅助方法,但无济于事。
UPDATE模型在我的应用程序中没有命名空间。 我使用的是普通用户模型。 只有控制器是命名空间的,并且结构如上面的路由所示。
有没有人有类似问题的经验?
似乎Devise嵌套在:api_v1_public_members
中的: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?
这里有类似的问题未定义的方法`authenticate_user! Devise / Rails 4中的Api :: PostsController
- 取消删除acts_as_paranoid在设计登录时删除用户
- Rails – 设计,如何禁用某些默认路由?
- Devise中的NoMethodError :: SessionsController#在使用“after_sign_in_path_for(resource)”时创建
- 将设计sign_in表单设置为Twitter Bootstrap Modal
- 如何使注册页面成为Devise的根页面?
- Devise中两个非常不同的用户模型
- 什么是omniauth和电子邮件密码注册最佳实践?
- TrueClass的未定义方法`model_name’:DeviseConfirmations的类(Rails 4,设计)
- 显示特定用户的post?