Rails 4 – devise_for不使用自定义控制器

我在我的Rails应用程序中使用Devise,我想自定义它的一些行为。 我已经阅读了devise_for的文档。 但我无法使用我的自定义控制器。 我的溃败看起来像这样:

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

在我的Users::RegistrationsController < Devise::RegistrationsController我尝试了以下内容:

 # POST /resource def create puts "I'm here" # never happens! super end 

关于我缺少的任何想法?

更新

这是我的文件结构: 在此处输入图像描述

更新2

想想我可能找到了问题的根源。 我在一个Bootstrap模式中渲染并呈现我的注册表单,而不是默认的Devise路径。

我在这条路上提出表格:

 /apps/1/edit 

并不是:

 users/sign_up 

如果我在这条路径上注册users/sign_up就可以了,我的方法users/sign_up被调用。 在我的/apps/1/edit视图中,我提供了这样的表单:

 = render "users/registrations/modal_form" 

我的apps_controller编辑操作(我提交注册表单的操作)当前是空的:

 # GET /apps/1/edit def edit end 

我的users/registrations/modal_form部分的相关部分如下所示:

 .modal.fade#registrations_modal{ tabindex: -1, role: 'dialog', "aria-labelledby" [..] = render "users/registrations/new_form" [..] 

我的users/registrations/new_form看起来像这样:

 = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| = devise_error_messages! .form-group = f.label :name = f.text_field :name, autofocus: true, class: "form-control" .form-group = f.label :email = f.email_field :email, class: "form-control" .form-group = f.label :password - if @minimum_password_length %em (#{@minimum_password_length} characters minimum) = f.password_field :password, autocomplete: "off", class: "form-control" .form-group = f.submit "Sign up", class: "btn btn-default" - if current_page?(new_user_registration_path) = render "devise/shared/links" 

我对Devise并不熟悉。 关于我遗失的内容和地点的任何想法?

想想我解决了。 问题出在我的form_for ,我使用了错误的路线。 而不是使用默认的registration_path作为url而不是使用:

 user_registration_path(resource_name) 

愚蠢的错误。 进入另一个问题,我现在继续得到:注册时ActionController::UnknownFormat 。 但它现在至少使用我的自定义控制器。