Просмотр рендеринга с разных контроллеров

90
14

Скажем, у меня есть контроллеры Яблоки и пчелы, а также новые действия в обоих. В новом действии Bee я установил некоторые переменные для отображения в "пчелах/новее". Я также хочу отобразить этот же шаблон из нового метода Apple. Каков правильный способ настройки переменных в этом случае? Я считаю, что копирование из заданий от Пчел - это не тот способ, которым можно заняться.

спросил(а) 2009-10-26T09:23:00+03:00 11 лет, 7 месяцев назад
1
Решение
63

Если вы собираетесь отображать его в более чем одном месте, лучше всего использовать частичный. Вы можете переместить весь соответствующий код представления в частичный (позвоните ему "apples_new", что означает, что вы сохраните его как /app/views/apples/ _apples_new.html.erb).


Затем в вашем обычном виде apples/new.html.erb вы можете просто называть это частичным:


<!-- /app/views/apples/new.html.erb -->
<h1>Apples New</h1>
<%= render :partial => "apples_new" %>

И в вашем новом "представлении" пчел вы можете сделать:


<!-- /app/views/bees/new.html.erb -->
<h1>Bees New</h1>
<% if @bees.has_apples? $>
<%= render :partial => "apples/apples_new" %>
<% end %>

Обратите внимание, что в моем примере выше я добавляю некоторую логику. Я предполагаю, что вы хотите только вызывать одну и ту же форму в определенных сценариях, поэтому я добавил "has_apples"? метод для демонстрации логики.

ответил(а) 2009-10-26T09:56:00+03:00 11 лет, 7 месяцев назад
45

Быстрое примечание: вы можете сжать эту логику в одну строку:

"apples/apples_new", если @bees.has_apples? % >

ответил(а) 2009-10-26T15:59:00+03:00 11 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема