Направляет блок кода на частичный

Rails 3.2.13 и ERB

Я пытаюсь отправить некоторые элементы link_to к частичному. Я отправляю в заголовок к частичному успешно, как показано ниже.

<%= render :partial =>'form', 
       :locals => {:page_title => t(:'<h2>Editing Feature</h2>')}

Что мне не нравится, так это то, что я сейчас занимаюсь этим:

<%= link_to 'Show', @feature %> |
<%= link_to 'Back', features_path %>

как часть основной страницы. Я хотел бы взять этот кодовый блок и отправить его в партиал для рендеринга там. Основная причина в том, что simple_form определена в частичном, и у меня есть колодец, который содержит все на этой странице. За исключением двух элементов link_to внизу страницы. Если бы я мог как-то передать их в частное (я предполагаю, что это блок кода), я бы мог решить, где их разместить и как отобразить их в самой форме, а не в качестве запоздалой мысли.

Благодарю.

1 ответ

Обычно мы используем партиалы, чтобы разбить фрагменты HTML на отдельные модульные компоненты и уменьшить количество повторений. Частичные переменные имеют тот же контекст переменной, что и шаблон, который их отображал, поэтому, как есть, у вас не возникнет никаких проблем, просто переместив ссылки на свою частичную, и все должно просто работать.

Тем не менее, я думаю, что лучшей практикой было бы передавать переменную вашего экземпляра как локальную, чтобы уменьшить связь с вашим контроллером. Что-то вроде:

Ваш взгляд:

<%= render :partial =>'form', 
           :locals => {:page_title => t(:'<h2>Editing Feature</h2>'), 
           :feature => @feature} %>

_form.html.erb:

<%= link_to 'Show', feature %> |
<%= link_to 'Back', features_path %>

Таким образом, если вы хотите визуализировать частичное в другом месте вашего приложения, вам не нужно иметь под рукой переменную экземпляра. Примером ситуации, в которой это может быть полезно, является циклический просмотр нескольких "функций" (в виде представления индекса) и выплевывание соответствующего HTML, как определено в частичном.

Другие вопросы по тегам