[英]Rails 4 - devise_for not using custom controllers
我在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模式中呈現並顯示我的注冊表單。
我在此路徑上顯示表單:
/apps/1/edit
並不是:
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
。 但這至少現在正在使用我的自定義控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.