diff --git a/app/views/shared/_errors.html.erb b/app/views/shared/_errors.html.erb
index 010cee74a..fff7801f8 100644
--- a/app/views/shared/_errors.html.erb
+++ b/app/views/shared/_errors.html.erb
@@ -5,7 +5,9 @@
- <%= pluralize resource.errors.count, t("form.error"), t("form.errors") %>
+ <% errors_count = resource.errors.messages.reject { |attribute| attribute == :base }.count %>
+
+ <%= pluralize errors_count, t("form.error"), t("form.errors") %>
<% if local_assigns[:message].present? %>
<%= message %>
diff --git a/spec/system/admin/dashboard/actions_spec.rb b/spec/system/admin/dashboard/actions_spec.rb
index 654c41ea3..bae5c6005 100644
--- a/spec/system/admin/dashboard/actions_spec.rb
+++ b/spec/system/admin/dashboard/actions_spec.rb
@@ -63,7 +63,8 @@ describe "Admin dashboard actions" do
scenario "Renders create form in case data is invalid" do
click_button "Save"
- expect(page).to have_content("errors prevented this Dashboard/Action from being saved.")
+
+ expect(page).to have_content("error prevented this Dashboard/Action from being saved.")
end
end
diff --git a/spec/views/shared/errors_spec.rb b/spec/views/shared/errors_spec.rb
new file mode 100644
index 000000000..6e3c4ec49
--- /dev/null
+++ b/spec/views/shared/errors_spec.rb
@@ -0,0 +1,40 @@
+require "rails_helper"
+
+describe "shared errors" do
+ class DummyModel
+ include ActiveModel::Model
+ attr_accessor :title, :description, :days
+
+ validates :title, presence: true
+ validates :description, presence: true, length: { in: 10..100 }
+ validates :days, numericality: { greater_than: 10 }
+ end
+
+ it "counts the number of fields with errors" do
+ resource = DummyModel.new(title: "Present", description: "", days: 3)
+ resource.valid?
+
+ render "shared/errors", resource: resource
+
+ expect(rendered).to have_content "2 errors"
+ end
+
+ it "doesn't include `base` errors in new records" do
+ resource = build(:debate, title: "", description: "")
+ resource.valid?
+
+ render "shared/errors", resource: resource
+
+ expect(rendered).to have_content "2 errors"
+ end
+
+ it "doesn't include `base` errors in existing records" do
+ resource = create(:debate)
+ resource.translations << Debate::Translation.new(title: "Title", description: "", locale: "es")
+ resource.valid?
+
+ render "shared/errors", resource: resource
+
+ expect(rendered).to have_content "1 error"
+ end
+end