Когда я рендерим партиал, который не существует, я получаю исключение. Я хотел бы проверить, существует ли частичное перед рендерингом, и в случае, если он не существует, я сделаю что-то еще. Я сделал следующий код в моем файле .erb, но я думаю, что должен быть лучший способ сделать это:
<% begin %>
<%= render :partial => "#{dynamic_partial}" %>
<% rescue ActionView::MissingTemplate %>
Can't show this data!
<% end %>
Я тоже мучился с этим. Вот метод, который я использовал в итоге:
<%= render :partial => "#{dynamic_partial}" rescue nil %>
По сути, если партиал не существует, ничего не делать. Вы хотите что-то напечатать, если частичная часть отсутствует?
Правка 1: О, я плохо понимаю прочитанное. Вы же сказали, что хотите отрендерить что-то другое. В таком случае, как насчет этого?
<%= render :partial => "#{dynamic_partial}" rescue render :partial => 'partial_that_actually_exists' %>
или
<%= render :partial => "#{dynamic_partial}" rescue "Can't show this data!" %>
Правка 2:
Альтернатива: Проверка наличия частичного файла:
<%= render :partial => "#{dynamic_partial}" if File.exists?(Rails.root.join("app", "views", params[:controller], "_#{dynamic_partial}.html.erb")) %>