Я новичок в рельсах. В настоящее время у меня есть 3 страницы в моем веб-приложении. Мне интересно, что такое "классный рельс", где я могу легко реализовать один и тот же баннер (логотип/текст pic/website) и меню горизонтальной навигации на каждой странице, не имея необходимости копировать и вставлять код или создавать отдельные файлы CSS для каждого стр. Это возможно? Хотелось бы придерживаться Ruby/Rails/CSS/HTML.
Кроме того, кажется, что, если я создаю элемент css под названием "баннер" для одного представления одного контроллера, другой вид другого контроллера имеет тот же стиль. Здесь что-то происходит за кулисами?
Благодарю.
Следуя этому руководству: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book, способ сделать это - использовать метод render
.
пример кода из учебника: app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" =>
true %>
<%= javascript_include_tag "application", "data-turbolinks-track" =>
true %>
<%= csrf_meta_tags %>
<%= render 'layouts/shim' %>
</head>
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= render 'layouts/flash' %>
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
</html>
Согласно учебному пособию, путь в рельсах для сборки логической единицы в одном месте - это использование объекта под названием partials.
Например, вы можете собирать панель навигации в app/views/layouts/_navbar.html.erb
то он может быть отображен в макете с <%= render 'layouts/navbar' %>
Подробнее о parials: http://ruby.railstutorial.org/chapters/filling-in-the-layout#sec-partials
Rails по умолчанию объединяет все файлы CSS в один мастер. http://guides.rubyonrails.org/asset_pipeline.html
Обычно это выполняется через application.html.erb. Вы помещаете заголовок своего веб-сайта на эту страницу, за которым следует оператор <% = yield%>, а затем нижний колонтитул. Оператор yield вставляет содержимое из любого действия, которое обрабатывается.
Например:
application.html.erb
<html>
<head>
</head>
<body>
<h1>My cool web site header and menu!</h1>
<%=yield %>
<p>Web site footer</p>
index.html.erb
<h2>Index</h2>
<ul>
<% @stuff.each do |thing| %>
<li><%=thing.name%></li>
<% end %>
</ul>
Содержимое index.html.erb будет вставлено в application.html.erb в месте, где отображается <% = yield%>.