简单表格不在顶部显示错误

Simple Form not showing errors at top

我有一个 simple_form 表单设置,它会正常显示内联错误。我遇到过一些用户看不到这些错误的问题,并要求在非常长的表格顶部进行清晰的枚举。我使用了 Rails 教程中的代码设置:

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

这被称为部分(从 app/views/application 加载)到表单 (object = f.object) 上。它不呈现,但我会在开发中的 rails 控制台中看到失败。为什么这不会以这种方式显示错误的任何想法?这是与 Turbo/Hotwire 有关的故障吗(有一个控制器监视文本区域以在内容溢出时调整大小)?

一个更短的形式,也使用相同的错误部分(并表现出相同的行为):

<%= simple_form_for [:admin, @annotation] do |f| %>
  <%= render 'error_messages', object: f.object %>

  <%= f.input :abbreviation,
              input_html: { minlength: 1 } %>
  <%= f.input :name,
              input_html: { minlength: 1 } %>
  <%= f.input :description,
              as: :text,
              input_html: { data: { controller: "textarea-autogrow"} },
              input_html: { minlength: 1 } %>
  <fieldset>
    <legend>Used For</legend>
    <%= f.input :oa,
                as: :boolean,
                label: "OA (Lodge, Chapter, Section) Issues" %>
    <%= f.input :council,
                as: :boolean,
                label: "Council (CSP, JSP, etc) Issues" %>
    <%= f.input :camp,
                as: :boolean,
                label: "Camp Issues" %>
  </fieldset>

  <%= f.button :submit,
               data: { disable_with: "Please wait..." }  %>
<% end %>

在 Michael Koper 的帮助下,我们解决了这个问题。 format.html 语句中缺少控制器方法 status: :unprocessable_entity。所以改变:

format.html { render action: "new"}

format.html { render action: "new", status: :unprocessable_entity }

解决了这个问题。