我按照 list 中的指示填写了所有文件,但当我输入无效数据时,我没有收到错误字段. 我已经重新启动了Rails服务器几次,但什么都没有改变. 具有无效数据的测试根据需要通过.

我的app/views/USERS/new.html.erb文件:

<% title "Sign up" %>
<h1>Sign up</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@user) do |f| %>
      <%= render 'shared/error_messages' %>

      <%= f.label :name %>
      <%= f.text_field :name, class: 'form-control' %>

      <%= f.label :email %>
      <%= f.email_field :email, class: 'form-control' %>

      <%= f.label :password %>
      <%= f.password_field :password, class: 'form-control' %>

      <%= f.label :password_confirmation, "Confirmation" %>
      <%= f.password_field :password_confirmation, class: 'form-control' %>

      <%= f.submit "Create my account", class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

我的"app/controllers/users_controller.rb"文件:

class UsersController < ApplicationController
  
  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    if @user.save
      #
    else
      render 'new'
    end
  end

  private

    def user_params
      params.require(:user).permit(:name, :email, :password, 
                                   :password_confirmation)
    end
end

我的app/Models/user.rb文件:

class User < ApplicationRecord
  before_save { email.downcase! }
  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEXP = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
  validates :email, presence: true, length: { maximum: 255 },
    format: { with: VALID_EMAIL_REGEXP },
    uniqueness: { case_sensitive: false }
  has_secure_password
  validates :password, length: { minimum: 6 }
end

和我的"app/views/Shared/_Error_Messages.html.erb"文件:

<% if @user.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-danger">
      The form contains <%= pluralize(@user.errors.count, "error") %>.
    </div>
    <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
    </ul>
  </div>
<% end %>

tap个 当我点击"Create My Account"(创建我的帐户)时,这只是刷新页面

UPD:我仔细地用Michael Hartl存储库中的代码判断了我的代码,但我没有发现任何奇怪的地方,可能是我使用的gem发生了一些变化.

推荐答案

在一个存储库中,我找到了一种针对rails版本7的解决方案,在rails 5中,所有内容都可以使用我上面提供的代码工作,但在版本7中,为了显示错误字段,您需要添加一个HTTP状态代码. 在控制器文件中的render 'new'之后添加status: :unprocessable_entity解决了我的问题.

Html相关问答推荐

关于角内按钮范围的混乱

单表单和多个提交(具有多个值)

在浮动元素旁边垂直居中

使用Cypress循环遍历不一致的父对象

我正在try 向列表中的图像添加悬停,以放大图像并将div的不透明度设置为1而不是0

将精选选项的价格合并为一个价格HTML、PHP和JQuery

如何在ASP.NET Core中添加换行符

网格中的图像zoom 不正确

如何用js和CSS在两点之间画一条线

带有数据 URI 的音频在 Chrome 中失败

如何调整边框半径以匹配父边框半径

当我将有序列表居中时,数字会跑到列表的另一行

使用 R markdown 在 html 中包含图像

奇怪的幻影 div 命名为

文本溢出:省略号不适用于 flexbox

Css 左属性问题

按部分划分的表行带

CSS 网格自动高度不适用于特定网格区域

无法在 css 的 body 标签中正确呈现(内联显示)

为什么我的动画会向 Moz Firefox 中的微调器添加人工制品?