Частичное - это, по сути, просто «кусок страницы» (как кусок торта ... но в кодовой форме).Он предназначен для заполнения небольшой части страницы;обычно тот, который будет динамически обновляться в зависимости от переменных страницы.
По моему мнению, вы путаете назначение макетов, представлений и частичных элементов.Если вы хотите динамически загружать CSS / JS, поместите блок " content_for " в представления профиля с макетом по умолчанию, например:
Макет
#layouts/default.rb
<html>
<head>
<title>Site Title</title>
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" %>
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js" %>
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "main" %>
<%= stylesheet_link_tag "reset" %>
<%= yield :header_includes %>
<%= csrf_meta_tag %>
</head>
<body>
<%= yield %>
</body>
</html>
Просмотров
#views/profiles/index.html.erb
<% content_for :header_includes do %>
<%= stylesheet "profile_custom_css" %>
<% end %>
Частичное
Частичные значения могут использоваться для сохранения вашего кода СУХИМЫМ и датьвывод определенных заголовочных файлов, например:
Частичный
#views/elements/_custom_header.rb
<% content_for :header_includes do %>
<% headers.each do |type, value| %>
<% if type == "java" %>
<%= javascript_include_tag value %>
<% else %>
<%= stylesheet_link_tag value %>
<% end %>
<% end %>
<% end %>
Вид
#views/profiles/index.html.erb
<%= render :partial => 'elements/custom_header', locals: { :headers => [["java", "profile_custom"], ["stylsheeet", "profile_custom"]] } %>
#Resume standard view code here
Макет
#layouts/default.rb
<html>
<head>
<title>Site Title</title>
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" %>
<%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js" %>
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "main" %>
<%= stylesheet_link_tag "reset" %>
<%= yield :header_includes %>
<%= csrf_meta_tag %>
</head>
<body>
<%= yield %>
</body>
</html>
Я не проверял передачу частичных локальных объектов в виде хэша, поэтому синтаксис может быть неправильным, но это то, что мы сделали бы для загрузки необходимого кода.Дополнительным преимуществом является то, что content_for возвращает только тот контент, который был определен (т.е. вы просто должны включить yield :custom_headers
, и он будет отображаться только при наличии блока контента)