3

我意识到这已经在这里被问过很多次了(我也阅读了维基)。但我仍然对如何正确保持我的路线名称相同感到困惑。

目前我的设计路线如下,使用自定义网址(例如/user/signup)。

我的模型被称为User

路线:

  devise_for :users, :controllers => { :registrations => "registrations" }, :path_names => {
    :sign_up => 'signup'
  }

  devise_for :users, :path => "user", :except => "create", :path_names => { 
    :sign_in  => 'login', 
    :sign_out => 'logout', 
    :password => 'forgot-password', 
    :confirmation => 'verification', 
    :unlock   => 'unblock', 
    :sign_up  => 'signup' 
  } 

我所要做的就是挂钩到创建操作,这样我就可以检查我创建的蜜罐字段是否已填写(以防止垃圾邮件)。这就是我真正想做的。

我想保持我的网址不变/user/signup。我需要做一个额外的步骤吗?

这是我到目前为止所拥有的...

/app/controllers/registrations_controller.rb

class Users::RegistrationsController < Devise::RegistrationsController

  def new
    super
  end

  def create
    super
  end

end   

我正进入(状态uninitialized constant Users

4

4 回答 4

10

很简单,我需要将控制器放在“用户”文件夹中,这样就解决了所有问题。(另外,路由控制器需要:registrations => "users/registrations"

于 2012-12-02T18:13:21.867 回答
3

我有同样的错误。就我而言,它在routes.rb

曾是:devise_for :users,controllers: {sessions: "users/sessions"}

结果:uninitialized constant Users

我不知道发生了什么,直到{sessions: "users/sessions"} 在我的情况下它应该user/sessions没有“s”

于 2015-01-30T10:36:27.887 回答
2

您不需要命名控制器Users::RegistrationsController,只需命名它以RegistrationsController保持继承自Devise::RegistrationsController.

我不知道第一个的目的,devise_for但您需要复制/移动:controllers => { :registrations => "registrations" }到第二个devise_for

于 2012-12-02T08:23:37.487 回答
1

开启devise (4.7.3)rails (6.0.3.3)正确的控制器Session未开启Sessions

你需要在你的config/route.rb

devise_for :users, controllers: { session: 'users/sessions' }
于 2020-09-23T10:19:48.317 回答