简单的问题。
我正在为我的应用使用 Rails 4.1.4 和设计3.3.0 。
我试图生成设计的控制器,以便我可以覆盖某些行为。
文档说要运行......
rails generate devise:controllers [scope]
...在 app / controllers / scope 下生成控制器,以便您可以修改它们。但是当我运行上一个命令时,它一直说没有生成器设计:控制器:
找不到发电机设备:控制器。
有谁知道为什么?。
感谢。
更新
事实上,当我跑...
rails generate
...要检索可用生成器的列表,我得到 Devise 生成器的以下输出:
设计
色器件
色器件:安装
色器件:观点
所以definitelly,设计:控制器生成器不在那里。有没有办法添加它?怎么样?
感谢。
答案 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 }
请注意,我有注册而不是注册
请注意,您的路线中可能有错字