diff --git a/app/views/rails_admin/main/show.html.haml b/app/views/rails_admin/main/show.html.haml
index 73e55f0a42..8532779d4a 100644
--- a/app/views/rails_admin/main/show.html.haml
+++ b/app/views/rails_admin/main/show.html.haml
@@ -1,6 +1,6 @@
- @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset|
- unless (fields = fieldset.with(object: @object, view: self, controller: self.controller).visible_fields).empty?
- - if !(values = fields.map{ |f| f.formatted_value.presence }).compact.empty? || !RailsAdmin::config.compact_show_view
+ - unless (fields = fields.reject{ |f| RailsAdmin::config.compact_show_view && f.formatted_value.nil? || f.formatted_value == '' }).empty?
.fieldset
%h4
= fieldset.label
@@ -8,9 +8,8 @@
%p= fieldset.help
%dl
- fields.each_with_index do |field, index|
- - unless values[index].nil? && RailsAdmin::config.compact_show_view
- %dt
- %span.label.label-info{class: "#{field.type_css_class} #{field.css_class}"}
- = field.label
- %dd.well
- = field.pretty_value
+ %dt
+ %span.label.label-info{class: "#{field.type_css_class} #{field.css_class}"}
+ = field.label
+ %dd.well
+ = field.pretty_value
diff --git a/spec/integration/config/show/rails_admin_config_show_spec.rb b/spec/integration/config/show/rails_admin_config_show_spec.rb
index fa55fc62e3..f203b7720c 100644
--- a/spec/integration/config/show/rails_admin_config_show_spec.rb
+++ b/spec/integration/config/show/rails_admin_config_show_spec.rb
@@ -27,7 +27,13 @@ def do_request
end
describe 'compact_show_view' do
- it 'hides empty fields in show view by default' do
+ it 'hides nil fields in show view by default' do
+ do_request
+ is_expected.not_to have_css('.logo_url_field')
+ end
+
+ it 'hides blank fields in show view by default' do
+ team.update logo_url: ''
do_request
is_expected.not_to have_css('.logo_url_field')
end
@@ -40,6 +46,15 @@ def do_request
do_request
is_expected.to have_css('.logo_url_field')
end
+
+ describe 'with boolean field' do
+ let(:player) { FactoryBot.create :player, retired: false }
+
+ it 'does not hide false value' do
+ visit show_path(model_name: 'player', id: player.id)
+ is_expected.to have_css('.retired_field')
+ end
+ end
end
describe 'bindings' do