Есть ли какая-либо функция Rails, чтобы проверить, существует ли частичное?

Когда я рендерим партиал, который не существует, я получаю исключение. Я хотел бы проверить, существует ли частичное перед рендерингом, и в случае, если он не существует, я сделаю что-то еще. Я сделал следующий код в моем файле .erb, но я думаю, что должен быть лучший способ сделать это:

    <% begin %>
      <%= render :partial => "#{dynamic_partial}" %>
    <% rescue ActionView::MissingTemplate %>
      Can't show this data!
    <% end %>
97
задан Daniel Cukier 24 August 2010 в 17:51
поделиться

1 ответ

Я тоже мучился с этим. Вот метод, который я использовал в итоге:

<%= 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")) %>
69
ответ дан 24 November 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: