我试图覆盖默认设计注册控制器的一些功能,以便只有某些用户可以为其他用户创建帐户。 因此,在controllers / users文件夹下名为registrations_controller.rb的文件中,我有以下内容

class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :check_permissions, :only => [:new, :create, :cancel]
  skip_before_filter :require_no_authentication

  def check_permissions
    authorize! :create, resource
  end
end

在我的路线文件中我有

devise_for:users,:controllers => {:registrations =>'users / registrations'}

当我尝试转到users / sign_up url时,我得到一个路由错误'uninitialized constant Users :: RegistrationsController'。

所以真正让我了解的是,我在rails 3应用程序中使用了几乎完全相同的功能而没有任何问题。 我看了一些类似于此的其他stackoveflow问题,我仍然没有更聪明。 我现在正在构建的应用程序是rails 3.1应用程序,我正在使用设计1.5.1

以下是它们有用的相关路线

new_user_session GET    /users/sign_in(.:format)                                      {:action=>"new", :controller=>"devise/sessions"}
                         user_session POST   /users/sign_in(.:format)                                    {:action=>"create", :controller=>"devise/sessions"}
                 destroy_user_session DELETE /users/sign_out(.:format)                                   {:action=>"destroy", :controller=>"devise/sessions"}
                        user_password POST   /users/password(.:format)                                   {:action=>"create", :controller=>"devise/passwords"}
                    new_user_password GET    /users/password/new(.:format)                               {:action=>"new", :controller=>"devise/passwords"}
                   edit_user_password GET    /users/password/edit(.:format)                              {:action=>"edit", :controller=>"devise/passwords"}
                                      PUT    /users/password(.:format)                                   {:action=>"update", :controller=>"devise/passwords"}
             cancel_user_registration GET    /users/cancel(.:format)                                     {:action=>"cancel", :controller=>"users/registrations"}
                    user_registration POST   /users(.:format)                                            {:action=>"create", :controller=>"users/registrations"}
                new_user_registration GET    /users/sign_up(.:format)                                    {:action=>"new", :controller=>"users/registrations"}
               edit_user_registration GET    /users/edit(.:format)                                       {:action=>"edit", :controller=>"users/registrations"}
                                      PUT    /users(.:format)                                            {:action=>"update", :controller=>"users/registrations"}
                                      DELETE /users(.:format)                                            {:action=>"destroy", :controller=>"users/registrations"}

===============>>#1 票数:15

我会说,你的文件名有问题。

您的文件应该被称为users/registrations_controller.rb

这对我行得通。

===============>>#2 票数:3

您的registrations_controller.rb保存在哪里? 位置很重要。 我发现我在将它保存到app/controllers/devise/.犯了一个错误app/controllers/devise/. 它只需要保存在app/controllers/. 例如:

app/controllers/registrations_controller.rb


此外, config/routes.rb路由应定义为:

devise_for :users, controllers: { registrations: 'registrations' }

===============>>#3 票数:2

我尝试了你放在这里的相同设置,但它对我有用。 我将应用程序上传到github(我也上传了日志,所以你可以看到它真的有效)。

仔细检查可能的拼写错误。 也许你忘了复数或类名上有拼写错误。

===============>>#4 票数:0

嗨,我刚刚在注册时添加了名字和姓氏。 我正在使用Rails 4。

我使用以下说明/教程来完成这项工作:

http://www.jacopretorius.net/2014/03/adding-custom-fields-to-your-devise-user-model-in-rails-4.html

:)

===============>>#5 票数:0

如果您已生成视图移动视图文件

我假设您已经使用rails generate devise:视图生成设计视图。 将views / devise / registrations文件夹移动到views / users,我想你也应该更改表单中的_path

===============>>#6 票数:0

执行rails routes并检查config/routes ,可能会在路由中出现拼写错误。

而不是registrationS#new你可能还有其他的东西,比如registration#new

  ask by Conor translate from so

未解决问题?本站智能推荐:

1回复

覆盖设计注册控制器后无法删除资源

我已经按照以下设计方法进行操作:成功注册后重定向到特定页面 。 我创建了一个新的RegistrationsController 我已经更改了routes.rb: 并在新的RegistrationsController下移动了devise/registrations/ vie
1回复

路由错误未初始化的常量Devise :: Controllers :: InternalHelpers

我有一个Rails 3.1应用程序。 我正在尝试访问登录页面。 我以前有这个工作,突然之间我收到了标题中给出的错误。 我也尝试过谷歌搜索,并查看其他stackoverflow问题,想知道是否有人可能遇到过同样的问题? 如果是这样,您如何克服。 我检查了终端机,发现收到以下信息:
3回复

heroku中的ActionController :: RoutingError(未初始化的常量User :: UsersController)(但一切都在本地工作)

我试图在heroku中运行我的应用程序但是在尝试注册甚至访问devise的登录页面时出现此错误: 这是我在heroku中错过的设计错误或服务器设置吗? 顺便说一下,我在雪松堆栈中运行一个rails3.1应用程序并加载索引页面是好的,但如果我尝试登录或注册,它会打击。 注册表格
1回复

Ruby on Rails:自定义设计注册控制器,请求创建操作

我有一个自定义注册控制器,但我不想覆盖设计的创建操作。 当我尝试注册用户时,出现此错误: 它是否要求它,因为我有一个自定义注册控制器? 如果是这样,这是否意味着我需要复制我不会从这里覆盖的所有操作: https : //github.com/plataformatec/devise/
1回复

通过运行功能测试来调试控制器方法

我处于运行功能测试时需要逐步通过控制器方法的情况。 我使用ruby-debug调试应用程序。 我的应用程序是使用ruby-1.8.7的Rails 3.1应用程序。 我可以使用调试我的代码 rails服务器--debugger或rails控制台--debugger 我还可以通过在
1回复

在Devise SSL控制器之后返回HTTP

我试图在Devise操作后将请求重定向到HTTP。 我不确定我要尝试的方法是否正确/最佳,因此我愿意提出建议。 这就是我所拥有的,并且以“重定向循环”失败了,这是可以理解的。 现在,我只需要弄清楚重定向后如何终止请求。 这值得追求还是有更好的方法?
1回复

Devise RegistrationsController在API中创建动作

我正在尝试使用API​​创建Rails 3应用程序。 我使用Devise作为我的身份验证系统。 我希望能够注册并稍后通过API登录。 而且我不太确定我该怎么做。 我创建了分离的控制器来管理API,即api/v1/account/1/projects.json 。 我目前正在尝试为API
1回复

在我自己的控制器中处理Devise登录

我想重写Devise当前处理登录流程的方式。 我不需要/想要/ users / sign_in,我只想使用我自己的root_path进行登录处理,即登录用户并处理失败的密码输入。 我已经成功创建了登录表单,但是如果用户未能正确输入密码,他/她将被重定向到/ users / sign_in
2回复

未知操作:找不到RegistrationsController的操作'create'?

我决定创建一个RegistrationsController,这样我就可以重新定向用户注册到特定页面。 唯一的问题是用户甚至没有创建,因为我收到错误: 我的路线和控制器: 这里发生了什么? 这是如何解决的? UPDATE 我把create动作放在protecte
2回复

RoR:设计主页上的注册表格

当我在主页上保存用户注册表格时,我遇到了麻烦。 它一直将我发送到localhost:3000/signup页面(出于验证目的,它会将我发送到那里,并显示错误) 该表格在我的layouts/index.html.erb页面中 这是我的路线: 这就是我的static#home