设计重定向路由问题

时间:2017-06-24 05:06:48

标签: ruby-on-rails devise ruby-on-rails-5

我的路线使用设计有问题。

我修改了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| %>

1 个答案:

答案 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

希望它有所帮助。