Я предпочитаю иметь выход взгляд компоновщика так:
<html>
<!-- other stuff -->
<body>
<!-- other stuff -->
<%= yield :javascript %>
</body>
</html>
Затем в окне вы можете написать:
<% content_for :javascript do %>
<script type='text/javascript'>
function doMagic() {
//Mind-blowing awesome code here
}
</script>
<% end %>
<!-- More view Code -->
<%= render :partial => "sub_view_with_javascript" %>
И в частичном _sub_view_with_javascript.html.erb вы также можете напишите:
<% content_for :javascript do %>
<script type='test/javascript'>
function DoMoreMaths() {
return 3+3;
}
</script>
<% end %>
Мое рассуждение для этого подхода заключается в том, что доходность и содержание_входят в разном nt файлов. Это не DRY, чтобы поместить тег script для каждого content_for , но он позволяет синтаксическому маркеру распознавать изменение языка в каждом файле и помогает мне там.
Если у вас есть несколько запросов content_for в одном файле к одному и тому же символу (в нашем случае: javascript), я бы рассмотрел возможность объединения всех их в верхний, но он идеально подходит для использования с частичными.
И HTML идеально подходит для того, чтобы иметь как можно больше блоков сценариев. Единственная возможная проблема - при работе с кодом в инструментах разработчика, таких как firebug, требуется немного больше времени, чтобы найти правильный блок сценария для вашей функции. Это происходит только для меня, когда мне нужно установить контрольную точку javascript для отладки.
Каков ваш прецедент? Является ли это динамически генерируемым js? – jonnii
Что будет примером динамически генерируемых js? Иногда мне нужно передать переменные из представления в функцию javascript во время выполнения. – TenJack