Rails设计不会重定向到根路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails设计不会重定向到根路径相关的知识,希望对你有一定的参考价值。

我的user模型看起来像这样typeuser表中的列,而std仅用于在用户sign_up时获取其他数据。现在当user(type: Student)登录时,设计再次呈现登录页面,消息日志成功不会呈现root_path和日志中它显示回滚事务,但当我刷新页面然后它呈现给root_path。这个问题只发生在type:Student,当我删除validates_presence_of :std线时,一切都运行得很好。

现在问题是为什么会发生这种情况或者如何做到这一点?

class User < ApplicationRecord
  attr_accessor :std
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  validates_presence_of :type


  validates_presence_of :std , allow_blank: false , if: -> { type == 'Student' },
                         message: 'Student must add grade to continue'


end

设计:: RegistrationsController.rb

class RegistrationsController < Devise::RegistrationsController

  def create
    super
    if params[:user][:type] == 'Student' and user_signed_in?
      current_user.grade = Grade.new({cls: params[:user][:std].to_i})
      current_user.save
    end

  end

  private

  def sign_up_params
    params.require(:user).permit(:email, :password, :password_confirmation, :type, :std)
  end

end
答案

解决..我认为它也验证user(type:Student)at登录时间,所以我刚刚添加

validates_presence_of :std , allow_blank: false , if: -> { type == 'Student' and new_record? },
                         message: 'Student must add grade to continue'

现在它仅在注册时进行验证。

以上是关于Rails设计不会重定向到根路径的主要内容,如果未能解决你的问题,请参考以下文章

Rails:将所有未知路由重定向到 root_url

vue-router 重定向到默认路径问题

Rails - 设计 - 重定向和成功消息未出现

Rails设置超时立即重定向

Rails:登录或注册后设计重定向到存储位置?

localhost在rails上重定向了太多次ruby