Можно ли манипулировать заполнителями, чтобы я мог не только устанавливать их содержимое, но и добавлять / удалять содержимое в определенном порядке? Например:
layouts / base.html.erb (базовый макет должен быть расширен):
<!DOCTYPE html>
<html>
<head>
<title><%= yield :title %></title>
<%= yield :stylesheets %>
<%= yield :javascripts %>
<%= yield :csrf %>
</head>
<body>
<div class='container-fluid'>
<%= yield :header %>
<%= content_for?(:content) ? yield(:content) : yield %>
<%= yield :footer %>
</div>
</body>
</html>
layouts / application.html.erb (это макет, который я буду использовать для большей части моего приложения, он наследуется от базового макета):
<% content_for :stylesheets do %>
<%= stylesheet_link_tag "application", :media => "all" %>
<% end %>
<% content_for :javascripts do %>
<%= javascript_include_tag "application" %>
<% end %>
<% content_for :csrf do %>
<%= csrf_meta_tags %>
<% end %>
<%= render :template => 'layouts/base' %>
Теперь я хочу макет для конкретного контроллера, который может потребовать добавить больше ссылок javascript или, возможно, полностью удалить их. Допустим, я хочу добавить только один файл после других javascripts. Пока я получил это:
layouts / some_controller.html.erb (это макет для конкретного контроллера, он должен наследоваться от макета приложения):
<% content_for :javascripts do %>
<script src="/assets/some_javascript_that_depends_on_jquery.js" type="text/javascript"></script>
<% end %>
<%= render :template => 'layouts/application' %>
Это не сработает, потому что это поместит some_javascript_that_depends_on_jquery.js в начало заполнителя: javascripts, и мне это нужно в конце, потому что это зависит от jquery.
Было бы плохо, если бы пришлось напрямую расширять базовую компоновку и отслеживать любые изменения, внесенные в компоновку приложения, чтобы применить ее и к компоновке для конкретного контроллера.
Каков рекомендуемый способ справиться с этой ситуацией?