想在Rails中的每个页面上使用相同的横幅/导航菜单

时间:2014-01-06 02:00:13

标签: html css ruby-on-rails

我是铁杆新手。我目前在我的网络应用程序中有3页。我想知道"酷路轨的方式是什么"我可以轻松地在每个页面上实现相同的横幅(图片/网站徽标/文本)和水平导航菜单,而无需复制和粘贴代码或为每个页面创建单独的CSS文件。这可能吗?想坚持使用Ruby / Rails / CSS / HTML。

此外,似乎如果我为一个控制器的一个视图创建一个标题为banner的css元素,则另一个控制器的另一个视图具有相同的样式。幕后有什么事吗?

感谢。

2 个答案:

答案 0 :(得分: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中&lt;%= yield%&gt;的位置。出现。

答案 1 :(得分: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