rails 似乎无法显示验证错误
Can't seem able to show validation errors on rails
我一直在阅读 rails 和 ruby 教程,并且刚刚开始我的第一个项目。一切进展顺利,但我在为新用户显示验证错误时遇到问题。这是我的控制器代码:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
redirect_to '/signup'
end
end
private
def user_params
params.require(:user).permit(:name, :lastname, :nickname, :email, :password)
end
end
这是我的表格。除了昵称,我省略了所有输入,因为我正在用它测试验证。
<%= form_for(@user) do |f| %>
<div class='form-group'>
<%= f.text_field :nickname, :placeholder => "User name", :class => "form-control", :required => true, :minlength => "2", :maxlength => "24" %>
<div class="text-danger">
<%= @user.errors[:nickname][0] %>
</div>
</div>
<% end %>
我只显示第一个相关错误以查看它是否有效,并避免任何让我怀疑它是否有效的 Ifs。 class 的验证是:
class User < ApplicationRecord
has_many :books
has_secure_password
validates :nickname, uniqueness: true
end
当我通过控制台创建一个新用户并尝试使用与另一个相同的昵称保存它时,它不会保存,所以验证工作正常。但是视图中没有显示任何错误,它只是返回到注册表单,仅此而已。我正在使用 ruby 2.2.6 和 rails 5.0.1。如果我遗漏了什么,请告诉我。
而不是重定向呈现 new
操作模板:
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
render 'new'
end
end
当您进行重定向时,您会丢失包含验证错误的 @user
对象。这就是为什么它们在视图中不可见
我一直在阅读 rails 和 ruby 教程,并且刚刚开始我的第一个项目。一切进展顺利,但我在为新用户显示验证错误时遇到问题。这是我的控制器代码:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
redirect_to '/signup'
end
end
private
def user_params
params.require(:user).permit(:name, :lastname, :nickname, :email, :password)
end
end
这是我的表格。除了昵称,我省略了所有输入,因为我正在用它测试验证。
<%= form_for(@user) do |f| %>
<div class='form-group'>
<%= f.text_field :nickname, :placeholder => "User name", :class => "form-control", :required => true, :minlength => "2", :maxlength => "24" %>
<div class="text-danger">
<%= @user.errors[:nickname][0] %>
</div>
</div>
<% end %>
我只显示第一个相关错误以查看它是否有效,并避免任何让我怀疑它是否有效的 Ifs。 class 的验证是:
class User < ApplicationRecord
has_many :books
has_secure_password
validates :nickname, uniqueness: true
end
当我通过控制台创建一个新用户并尝试使用与另一个相同的昵称保存它时,它不会保存,所以验证工作正常。但是视图中没有显示任何错误,它只是返回到注册表单,仅此而已。我正在使用 ruby 2.2.6 和 rails 5.0.1。如果我遗漏了什么,请告诉我。
而不是重定向呈现 new
操作模板:
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
render 'new'
end
end
当您进行重定向时,您会丢失包含验证错误的 @user
对象。这就是为什么它们在视图中不可见