簡體   English   中英

Rails 4-devise_for不使用自定義控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM