Feature #33102: Import user accounts from CSV file (パッチ確認)
#note-7 で render になぜ rescue nil を追加しているのかという指摘があった。ユーザーのCSVインポートはサイドバー表示のテンプレートを用意していないため、renderで読み込もうとしてエラーが発生するのを防ぐため(#note-8)。
diff --git a/app/views/imports/new.html.erb b/app/views/imports/new.html.erb
index e7ca82428..b9607e650 100644
--- a/app/views/imports/new.html.erb
+++ b/app/views/imports/new.html.erb
@@ -12,4 +12,4 @@
<p><%= submit_tag l(:label_next).html_safe + " »".html_safe, :name => nil %></p>
<% end %>
-<%= render :partial => "#{import_partial_prefix}_sidebar" %>
+<%= render :partial => "#{import_partial_prefix}_sidebar" rescue nil %>
ただ、すべての例外を捕捉して nil を返すことは、本当にエラーが発生したときに気づくのが難しくなるので好ましくない。ほかの方法がないか検討してみた。
以下のように ActionView::LookupContext::ViewPaths#exists? を使うことで
テンプレートの存在有無を確認できた。
<%= render :partial => "#{import_partial_prefix}_sidebar" if lookup_context.exists?("_#{import_partial_prefix}_sidebar", lookup_context.prefixes) %>
公式サイトのチケットにコメント(#note-9)。