У меня есть частичный, который нужно включить некоторые ЯША: вид/главный/_address_slider.html.erbRails: Сухое content_for перед тем выходом
<% content_for :scripts do %>
<%= javascript_include_tag 'swipeslider/dist/idangerous.swiper.min' %>
<%= javascript_include_tag 'fineuploader' %>
<% end %>
...
У меня есть страница тестирования: вид/главный/test_partial_address_slider .html.erb
<% content_for :scripts do %>
<%= javascript_include_tag 'swipeslider/dist/idangerous.swiper.min' %>
<%= javascript_include_tag 'mycustomplugin' %>
<% end %>
<% render 'address_slider' %>
у меня есть конкретный макет тест: вид/макеты/test.html.erb
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta name="description" content="Social Network">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title><%= @meta_title %></title>
<%= yield :meta %>
<%= yield :styles %>
<%= yield :scripts %>
</head>
<body>
<div id="page">
<%= display_flash %>
<%= yield %>
</div>
</body>
</html>
Чем в моем контроллере: контроллеры/main_controller
def test_partial_address_slider
render "test_partial_address_slider", layout: "test"
end
Визуализированной страница содержит импорт Js из swipeslider/DIST/idangerous.swiper.min дважды.
<head>
<meta charset="utf-8">
<meta name="description" content="Social Network">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>....</title>
<script src="/assets/swipeslider/dist/idangerous.swiper.min.js?body=1" type="text/javascript"></script>
<script src="/assets/swipeslider/dist/idangerous.swiper.min.js?body=1" type="text/javascript"></script>
<script src="/assets/fineuploader.js?body=1" type="text/javascript"></script>
<script src="/assets/mycustomplugin.js?body=1" type="text/javascript"></script>
</head>
Можно ли удалить дубликат из content_for перед выходом в моем макете?
не совсем потому, что вы пытаетесь сказать что-то вроде, если вы уже уступили: скрипты, больше не уступайте его. Но я хочу собрать все сценарии content_for: (потому что они могут быть разными), а затем перемещать весь: script content_for и удалять дубликат. – rolele
Нет такой функциональности. Вы должны определить массив скриптов как переменную экземпляра и использовать хелпер (ов) для добавления скриптов. Или вы можете попробовать '<% content_for: smth do%><% = yield: smth if content_for? : smth%> здесь дополнительный html <% end %> '(я не пробовал, но, похоже, все в порядке). – prcu
Извините, я только что прочитал, что по умолчанию 'content_for' работает так, как вы хотите (в 4.1, не проверял другие версии). Он конкатенирует результат, если вызывается несколько раз: http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for – prcu