我正在编写一个基于Sinatra的小应用程序,并希望每个视图能够在布局中插入各种项目,例如页面title
或head
中的额外CSS / javascript引用
目前我的布局(erb)看起来像这样(简化):
<html>
<head>
<title>Hard Coded Title Here</title>
<link rel="stylesheet" ... />
</head>
<body>
<h1>Hard Coded Title Here</h1>
<div id="content">
<%= yield %>
</div>
</body>
</html>
我不想将标题和CSS / JS引用硬编码,而是希望在这些方面取得成果:
<html>
<head>
<title><%= yield :title %></title>
<link rel="stylesheet" ... />
<%= yield :more_head_refs %>
</head>
<body>
<h1><%= yield :title %></h1>
<div id="content">
<%= yield %>
</div>
</body>
</html>
并且能够在每个视图中定义这些块的内容。
这是可能的,如果可以的话,我该如何去做呢?
答案 0 :(得分:4)
我最近在Railscamp遇到了这个问题,幸运的是Tim Lucas能够指出我所谓的sinatra-content-for分叉和工作的东西。这将涵盖您的需求。
答案 1 :(得分:3)
我发现这是Sinatra中Rails风格的“content_for”功能最强大的解决方案,特别是如果你使用的是ERB模板而不是Haml:
答案 2 :(得分:0)
您可以在ruby文件中使用@stylesheet