Рендеринг вида с другого контроллера - PullRequest
0 голосов
/ 26 октября 2009

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

Ответы [ 2 ]

0 голосов
/ 26 октября 2009

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

"apple / apple_new", если @ bees.has_apples? %>
0 голосов
/ 26 октября 2009

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

Затем, в вашем обычном представлении яблок / 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?" способ продемонстрировать логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...