简单表格不在顶部显示错误
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 }
解决了这个问题。
我有一个 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 }
解决了这个问题。