我的路线使用设计有问题。
我修改了devise/sessions/new
视图以同时拥有登录和sign_up表单。
一切正常,如果所有字段都正确填充,我可以使用同一视图中的任一表单(sign_in)登录或注册。但是,如果注册表单中存在错误(丢失电子邮件或错误的确认密码),则会将用户重定向到“经典”设计sign_up
页面,其网址为http://0.0.0.0:3000/users
,而不是留在{ {1}}页面并显示错误。
我的路线如下:
users/sign_in
我的注册表格有以下声明:
devise_for :users, controllers: { sessions: "users/sessions"}
as :user do
get 'sign_in', :to => 'devise/sessions#new'
end
我的应用程序助手设置用户资源:
<%= form_for(resource, as: resource_name, class: "registrtion-form", url: registration_path(resource_name)) do |f| %>
答案 0 :(得分:1)
我认为你可以尝试覆盖RegistrationsController.create方法来做到这一点。
class User::RegistrationsController < Devise::RegistrationsController
def create
build_resource(sign_up_params)
resource.save
yield resource if block_given?
if resource.persisted?
if resource.active_for_authentication?
set_flash_message! :notice, :signed_up
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message! :notice, :signed_up_but_#{resource.inactive_message}"
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
set_minimum_password_length
# respond_with resource
# custom code to redirect to your sign up form if have an error in the registration form.
redirect_to ...
end
end
end
希望它有所帮助。