Rails:不显示验证错误消息

问题描述 投票:0回答:1

我是 Rails 新手,尝试通过创建一个简单的测试项目来学习,在该项目中我尝试在浏览器上显示验证错误消息。问题是消息没有显示。我指的是这个博客

#app/controller/dogs.rb
def create
  @dog = Dog.new(dog_params)
  if @dog.save
    redirect_to dog_path(@dog)
  else
    p @dog.errors.inspect
    render :new
  end
end

# app/models/dog.rb
class Dog < ApplicationRecord
  validates :name, presence: true
  validates :age, presence: true
end
<!-- app/views/dogs/new.html.erb -->
<h1>CREATE NEW PUP!</h1>

<%= @dog.errors.inspect %>
<% if @dog.errors.any? %>
  <% @dog.errors.full_messages.each do |message|%>
    <h3><%= message %></h3>
  <% end %>
<% end %>

<br />

<%= form_for @dog do |f| %>
  <%= f.label :NAME %>
  <%= f.text_field :name %>
  <%= f.label :AGE%>
  <%= f.text_field :age%>
  <br />
  <%= f.submit "SUBMIT" %>
<% end %>

我有两个观察结果:

  1. 如果我转到 Chrome 中的网络 DevTool,然后检查预览选项卡,我可以看到错误消息正在预览选项卡中呈现。但我在主浏览器/输出上看不到它们。尝试使用多个浏览器。结果相同。
  2. 从控制器打印
    @dog.errors.inspect
    到终端后,我可以看到错误。但是当在视图上使用
    @dog.errors.inspect
    时,errors[] 为空。
ruby-on-rails
1个回答
0
投票

也许可以帮助别人,要解决这个问题只需使用:

渲染“新”,状态::unprocessable_entity

© www.soinside.com 2019 - 2024. All rights reserved.