Динамическое содержимое макета и методы запроса rails

#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, я не думал использовать его в этом контексте.