📜  Ruby on Rails布局

📅  最后修改于: 2021-01-12 02:48:44             🧑  作者: Mango

导轨布局

在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的控制器,则rails将搜索layouts / gio.html.erb布局。如果不存在具有相同名称的布局,则它将使用默认布局app / views / layouts / appplication.html.erb

例:

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

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

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

 
 
   
    Login 
    
   

   
           
    <%= yield %>     
         
   
 

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

 
 
 
    Layout Example 
 
 
        

Layout Example

<%= yield %>

www.javatpoint.com

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

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

 layout "lay" 
   
  def index
code....

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

下载