Rails布局实例图解

本文概述

在Rails中, 布局是可以组合在一起(例如页眉, 页脚, 菜单等)以构成完整视图的块。一个应用程序可以具有所需的任意多个布局。 Rails使用约定优于配置来自动将布局与具有相同名称的各个控制器配对。

Rails布局基本上在”不要重复自己”原理(DRY)下工作。

在Rails中, 默认情况下启用布局。每当你生成新的Rails应用程序时, 都会在app / views / layouts中自动为你生成一个布局。

首先, 我们需要定义一个布局模板, 然后为控制器定义知道该布局存在的路径。


建立回应

从控制器的角度来看, 有三种创建HTTP响应的方法:

  • 调用渲染以创建完整响应以发送回浏览器
  • 调用redirect_to向浏览器发送HTTP重定向状态代码
  • 呼叫头以创建响应并返回到浏览器

收益声明的重要性

Rails中的yield语句决定将布局的内容呈现在何处。如果布局中没有yield语句, 则将呈现布局文件本身, 但动作模板中的其他内容将无法正确放置在布局中。

因此, 需要在布局文件中添加yield语句。

<%= yield %>

Rails布局和模板之间的关系

在应用程序中发出请求时, 将发生以下过​​程:

  • 首先, Rails在控制器动作中找到用于相应动作的模板以呈现方法。
  • 然后找到要使用的正确布局。
  • 它使用动作模板来生成特定于该动作的内容。
  • 最后, 它查找布局的yield语句, 并在此处插入操作的模板。

寻找正确的布局

Rails在app / layouts目录中搜索与控制器名称相同名称的布局。

例如, 如果你有一个名为GioController的控制器, 则导轨将搜索layouts / gio.html.erb布局。它不存在具有相同名称的布局, 则它将使用默认布局app / views / layouts / appplication.html.erb

例:

前面我们做了一个示例, 其输出如下:

Ruby on Rails布局1

现在在此应用程序中, 我们将插入一个布局文件。

步骤1转到app / layouts / application.html.erb文件, 删除所有代码并编写以下代码。

<!DOCTYPE html> 
<html> 
  <head> 
    <title>Login</title> 
    
  </head> 

  <body> 
  		 
    <%= yield %>	 
    	 
  </body> 
</html>
Ruby on Rails布局2

步骤2转到app / layouts目录并创建lay.html.erb文件。

<!DOCTYPE html> 
<html> 
<head> 
	<title>Layout Example</title> 
</head> 
<body> 
		<h1>Layout Example</h1> 
	<%= yield %> 
		<p>www.srcmini02.com</p>                                           
</body> 
</html>

步骤3通过编写以下代码将其插入app / controllers / users_controller.rb文件。

class UsersController < ApplicationController 
  before_action :set_user, only: [:show, :edit, :update, :destroy] 

 layout "lay" 
   
  def index
code....

步骤4在浏览器上运行它。

Ruby on Rails布局3

下载

下载此示例

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?