Желание того же баннера / меню навигации на каждой странице в Rails

0

Я новичок в рельсах. В настоящее время у меня есть 3 страницы в моем веб-приложении. Мне интересно, что такое "классный рельс", где я могу легко реализовать один и тот же баннер (логотип/текст pic/website) и меню горизонтальной навигации на каждой странице, не имея необходимости копировать и вставлять код или создавать отдельные файлы CSS для каждого стр. Это возможно? Хотелось бы придерживаться Ruby/Rails/CSS/HTML.

Кроме того, кажется, что, если я создаю элемент css под названием "баннер" для одного представления одного контроллера, другой вид другого контроллера имеет тот же стиль. Здесь что-то происходит за кулисами?

Благодарю.

Теги:

2 ответа

0

Следуя этому руководству: 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

0

Обычно это выполняется через 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%>.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню