📅  最后修改于: 2023-12-03 15:04:56.820000             🧑  作者: Mango
Ruby on Rails框架提供了一种清晰而强大的方式来管理Web应用程序中的布局。使用布局,您可以定义一个在多个视图文件中重复使用的HTML结构,并在其中插入不同的内容。
布局文件默认位于app/views/layouts
目录下。一个应用程序可以有多个布局文件,每个布局文件有一个不同的名称。
布局文件通常命名为application.html.erb
。erb
表示布局文件可以包含嵌套的Ruby代码,并且可以渲染视图文件中传递的变量。
以下是一个示例布局文件:
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<nav>
<ul>
<li><%= link_to 'Home', root_path %></li>
<li><%= link_to 'About', about_path %></li>
<li><%= link_to 'Contact', contact_path %></li>
</ul>
</nav>
<%= yield %>
</body>
</html>
该布局文件定义了一个导航栏和一个占位符,可以在视图文件中插入内容。
视图文件可以插入布局文件中的内容,并覆盖布局文件中的占位符。视图文件可以直接在app/views
目录下或在控制器的子目录下定义,例如:
app/views/posts/index.html.erb
app/views/home/index.html.erb
以下是一个app/views/posts/index.html.erb
的示例视图文件,它插入了布局文件中定义的导航栏和覆盖了yield
占位符的内容:
<h1>List of Posts</h1>
<ul>
<% @posts.each do |post| %>
<li><%= link_to post.title, post_path(post) %></li>
<% end %>
</ul>
布局文件可以被扩展以支持更多的灵活性。您可以定义一个笼统的布局文件,然后在它的基础上创建更具体的布局文件。扩展的布局文件通常放在被扩展的布局文件同一目录下,并以_
作为前缀。
以下是一个application.html.erb
的扩展布局文件_sidebar.html.erb
:
<nav>
<ul>
<li><%= link_to 'Home', root_path %></li>
<li><%= link_to 'About', about_path %></li>
<li><%= link_to 'Contact', contact_path %></li>
</ul>
</nav>
使用扩展布局文件,我们可以将application.html.erb
中的导航栏定义移动到_sidebar.html.erb
文件中,并从application.html.erb
中调用它:
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<%= render 'layouts/sidebar' %>
<%= yield %>
</body>
</html>
Ruby on Rails框架使用布局是一种清晰而强大的方式来定义Web应用程序中的HTML结构,并插入不同的内容。布局文件通常位于app/views/layouts
目录下,并可以被视图文件扩展。通过使用布局,我们可以轻松地在不同的视图文件中复用相同的HTML结构。