我试图覆盖默认设计注册控制器的一些功能,以便只有某些用户可以为其他用户创建帐户。 因此,在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

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