簡體   English   中英

為什么Devise將sign_up錯誤重定向到另一個頁面?

[英]Why does Devise redirect sign_up error to a different page?

我創建了一個新的Rails項目,僅使用生成的主頁控制器進行了測試。

我的設計模型是User ,所以注冊頁面是http://localhost:3000/users/sign_up

如果我觸發錯誤,例如,在不提供密碼的情況下提交表單,則會重定向到http://localhost:3000/users

發生錯誤后,如何留在http://localhost:3000/users/sign_up

我讀了這個問題唯一的答案建議在控制器中使用redirect_to :back

問題是我沒有覆蓋控制器。 如果覆蓋是解決問題的唯一方法,請說明應如何解決。

這是我的routes.rb

Rails.application.routes.draw do
  root to: "home#index"
  get 'home/index'
  devise_for :users
end

Devise::RegistrationsController的源代碼。 我應該如何覆蓋newcreate來實現我所需要的?

我強烈建議您不要這樣做。 Rails應用程序的默認行為(遵循路由命名約定)就是您描述的方式。 但是,如果您確實需要這樣做,請按以下步驟操作。

首先,轉到您的routes.rb並:

devise_scope :user do
    post 'users/sign_up', to: 'devise/registrations#create'
end

編輯

然后,生成設計視圖,以便您可以覆蓋表單的默認行為。

rails g devise:views

然后,打開您的app/views/devise/registrations/new.html文件並編輯form_for行,如下所示:

<%= form_for(resource, as: resource_name, url: users_sign_up_path) do |f| %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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