我正在尝试登录并注册页面,但是当我尝试验证电子邮件和密码时,没有弹出错误消息,尽管应该弹出这些消息,但条件不满足。
我已经尝试过通过布局视图和帮助器显示错误消息,但是没有任何效果,或者让我难以理解。
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.create(password: params[:password], email: params[:email], firstname: params[:firstname], lastname: params[:lastname])
if @user.save
redirect_to user_path(@user)
else
redirect_to root_path
end
end
def show
@user = User.find(params[:id])
end
end
这是我的用户控制器
这是我的用户模型
class User < ApplicationRecord
has_secure_password
validates :email, presence: true, uniqueness: true
validates :password, length: { minimum: 4 }
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+
[a-z]{2,})\Z/i, :message => "hollksd"(just for testing)
end
这是我的新用户视图
<%= form_for @user do |form| %>
<p> First name:<%= form.text_field :firstname %></p>
<p>Last name:<%= form.text_field :lastname %></p>
<p>Email:<%= form.email_field :email %></p>
<p>Create password:<%= form.password_field :password %></p>
<%= form.submit %>
<%end%>
如果有人可以帮助,将不胜感激!
答案 0 :(得分:1)
似乎您的html元素未与用户模型相关联,请尝试使用form_for标记,如下所示
<%= form_for @user do |form| %>
<%= form.text_field :first_name %>
<%= form.text_field :last_name %>
<%= form.submit %>
<%end%>
也请使用render :new
代替redirect_to root_path
答案 1 :(得分:1)
您需要将create
操作更新为以下内容:
def create
@user = User.new(password: params[:password], email: params[:email], firstname: params[:firstname], lastname: params[:lastname])
if @user.save
redirect_to user_path(@user)
else
render :new
end
end
为什么new
无法保存时呈现?因为我们需要告知该表单无效,并且通过使用@user
对象进行渲染,所以您可以访问@user.errors
,在这里您可以做任何您想做的事情(正式的表单会渲染红色边框和错误消息旁边的输入。)