Rails生成设计:控制器无法工作

时间:2014-10-03 18:47:00

标签: ruby-on-rails devise

简单的问题。

我正在为我的应用使用 Rails 4.1.4 设计3.3.0

我试图生成设计的控制器,以便我可以覆盖某些行为。

文档说要运行......

  

rails generate devise:controllers [scope]

...在 app / controllers / scope 下生成控制器,以便您可以修改它们。但是当我运行上一个命令时,它一直说没有生成器设计:控制器

  

找不到发电机设备:控制器。

有谁知道为什么?。

感谢。

更新

事实上,当我跑...

  

rails generate

...要检索可用生成器的列表,我得到 Devise 生成器的以下输出:

  

设计

     

色器件

     

色器件:安装

     

色器件:观点

所以definitelly,设计:控制器生成器不在那里。有没有办法添加它?怎么样?

感谢。

4 个答案:

答案 0 :(得分:14)

<强>解决

我刚刚手动创建了控制器并使其继承自设计。例如:

class Users::RegistrationsController < Devise::RegistrationsController
    # Override the action you want here.
end

此控制器应位于 app / controllers / users / registrations_controller.rb 中。如果您有任何其他范围,请使用 app / controllers / scope / registrations_controller.rb 。例如,如果您有 admin 范围,那么它将是 app / controllers / admins / registrations_controller.rb

最佳。

<强>更新

根据 blushrt 的评论,我忘了提及修改 config / routes.rb 以使设计使用为特定资源创建了控制器。例如,对于用户,您应该输入 config / routes.rb

devise_for :users, controllers: { registrations: "users/registrations" }

就是这样。最好的。

答案 1 :(得分:3)

回答OP的原始问题“有谁知道为什么?”

问题是这个生成器目前只能在Devise的主分支上使用,如GitHub issue所述。

如果您想在发布之前使用此功能,可以将此功能添加到Gemfile

gem 'devise', git: 'https://github.com/plataformatec/devise'

答案 2 :(得分:2)

https://github.com/plataformatec/devise/wiki/Tool:-Generate-and-customize-controllers

您可以在终端中运行此命令。

bash <(curl -s https://raw.githubusercontent.com/foohey/cdc/master/cdc.sh)

答案 3 :(得分:0)

将其放在此处,以防其他人遇到此(傻)问题。我无法弄清楚为什么到/ users的POST一直路由到Devise :: RegistrationsController#create而不是Users :: RegistrationsController#create

原因?

我在route.rb中有错字

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

请注意,我有注册而不是注册

请注意,您的路线中可能有错字