#html #ruby-on-rails #layout
#HTML #ruby-on-rails #макет
Вопрос:
Итак, моя основная проблема заключается в следующем: я хочу, чтобы в моем приложении / представлениях / макете был нижний колонтитул, который меняется в зависимости от того, какой метод запроса используется. В частности, я хочу, чтобы в нижнем колонтитуле было что-то, что говорит «редактировать» в запросе на показ и ссылки на запрос на редактирование. То, что я хочу сделать, это создать что-то вроде:
<%=if method == 'edit' %>
<%= render :partial=> edit_button :object => some how get the current instance variable %>
..в моем нижнем колонтитуле и в edit_button.html.erb было бы:
<%=link to 'edit', edit_<resource>_path(resource)%>
Я знаю, что это немного расплывчато, но я думаю, это потому, что я неправильно думаю о проблеме. Я понимаю, что у меня могло бы быть просто три разных макета, по одному для «редактировать», «показывать» и «создать», но это кажется излишним и определенно не является сухим. Может ли кто-нибудь указать мне правильное направление здесь?
Ответ №1:
Один из способов сделать это — использовать директивы yield
и content_for
. Например
В макете
Вы можете сделать:
<%= yield :footer_links %>
На странице показа
Вы можете сделать:
<% content_for :footer_links do %>
<%= link to 'edit', edit_<resource>_path(resource) %>
<% end %>
И так далее. Вы можете передавать любое содержимое в yield
блок через content_for
.
Комментарии:
1. Спасибо, это именно то, что я искал, и хотя я знал о yield / content_for, я не думал использовать его в этом контексте.