diff --git a/app/models/tree.rb b/app/models/tree.rb
index 93b3246a6681fa2be48f4cea9812e98165d37f35..e0e04d8859fdcaadf3292e8afc395fa21542576b 100644
--- a/app/models/tree.rb
+++ b/app/models/tree.rb
@@ -17,18 +17,16 @@ class Tree
   def readme
     return @readme if defined?(@readme)
 
-    available_readmes = blobs.select(&:readme?)
+    # Take the first previewable readme, or return nil if none is available or
+    # we can't preview any of them
+    readme_tree = blobs.find do |blob|
+      blob.readme? && (previewable?(blob.name) || plain?(blob.name))
+    end
 
-    if available_readmes.count == 0
+    if readme_tree.nil?
       return @readme = nil
     end
 
-    # Take the first previewable readme, or the first available readme, if we
-    # can't preview any of them
-    readme_tree = available_readmes.find do |readme|
-      previewable?(readme.name)
-    end || available_readmes.first
-
     readme_path = path == '/' ? readme_tree.name : File.join(path, readme_tree.name)
 
     git_repo = repository.raw_repository