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 对象。这就是为什么它们在视图中不可见