2014-01-06 36 views
0

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

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

谢谢。

回答

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的内容将被插入到该应用程序。在出现<%= yield%>的地方显示html.erb。

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> 

根据教程,在导轨的方式收拾的逻辑单元在一个地方是使用称为分音设施。

例如,你可以收拾在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