gpt4 book ai didi

ruby-on-rails - Rails中的模板,局部和布局?

转载 作者:行者123 更新时间:2023-12-04 05:04:11 28 4
gpt4 key购买 nike

回顾一些入门类(class),我发现这些术语是单独使用的,但是我认为我只了解布局。据我所知,布局是代码的临时部分(例如右侧导航部分,包含广告的div或类似内容),而部分是部分模板,但模板是什么,它与模板有何不同布局?

如果可能,您能否给出所有这三个相互关联的定义? (即模板是...。有两种类型,局部和布局...。布局是模板的特定类型或答案是什么)

如果需要,请更正我的假设...

在使用pjax的Railscasts 294中,布局由随机数生成器显式区分,这就是为什么我迷路了。

我正在尝试使App/Verb/名词访问一个页面,在这里我可以“捕获”或“显示”“照片”,“视频”,“图像”等...(应用程序/捕获/照片或app/captures/videos或app/displays/photos等),并尝试根据我“捕获”不同事物的时间进行一个div更改....而我却迷失在语篇中,或者我真的很亲近,但我不是很了解我在做什么。

最佳答案

我知道这是一个老问题,但我也想知道同样的问题。在指南中,没有明确说明布局和 View 之间的差异,也没有明确说明关系。更令人困惑的是,术语"template"经常用于两者。作为90年代对Smalltalk进行编程的人(但对Rails来说是新手),我深刻理解MVC并了解其实现的许多方式中的一些-因此,我对此并不感到困惑。关于 View ,布局和模板以及它们之间的相互关系,缺少一小部分上下文。

这是我如何理解它的方法:

从简单的理解和示例开始,以便清楚地了解每个部分的关系和作用:

  • 一个 View 是“要显示的东西”,供特定 Controller 响应某个 Action (将其置于特定状态)。 View 是模型在特定状态下针对特定操作(原因/上下文)的快照。它与信息和状态有关,而不一定与“看起来不错”有关。
  • 布局具有有关如何显示内容的特定信息。它可能具有标记(CSS,HTML等),该标记提供了有关如何组织某些内容的说明(此部分位于此处,该部分位于上方,这些位于底部,这些位于顶部,即导航信息,是H1,就是H3,这是一个定义..)及其外观(左,右,上,下,红色,绿色,强调,闪烁,隐藏,大,小,Helvetica等)
    想想“ L ayout和 L 敬好”

  • 假设您有一个Contract模型和一个 Controller ,并且有一个定义 View 的文件: view/contracts/show.htm.erb:
       <% content_for :full_identification do %>
    <p><%= contract.display_name %> <%=contract.full_id_number %> </p>
    <% end %>

    <% content_for :summary do %>
    <p> This is the summary for <%= contract.simple_name %>. You hire us. We give you coolness. You pay us.</p>
    <% end %>

    <% content_for :client_info do %>
    <div class="client-info">
    <p><span class="contract-title">Client: <%= contract.client_name%></span></p>
    <p>Address: <%= contract.client_address%></p>
    <p>Phone: <%= contract.client_phone %> </p>
    ... more info about the client....
    </div>
    <% end %>

    <% content_for :scope_of_work_statement do %>
    <p class="scope-of-work-statement"><%= contract.scope_of_work%>:</p>
    <% end %>

    您的 布局文件将包含有关HTML的更多详细信息(假定HTML输出)以及有关您希望外观的细节。也许您有一个 Controller ,并且该 View 特定于客户看到契约(Contract)的方式(以及方式)。您有一个用于该特定 Controller 的布局文件,它看起来像这样: layouts/contracts/contracts_clients_view.htm.erb
     <div class="tab-pane fade in"  >
    <div class="span7 highlight >
    <%= yield :full_identification %>
    <div class="no-breaks reflow" >
    <%= yield :summary%>
    </div>
    </div>

    <div class="span5 scope-of-work-statement">
    <h3>Scope of Work Statement</h3>
    <%= yield :scope_of_work_statement %>
    </div>
    </div>
    </div>

    * [这是一个完全人为设计的示例,因此我可以使 View 和布局之间的关系清晰明了。显然,在现实世界中,事物的建模和表达方式有所不同。 ] *

    View 向布局提供输入(内容)。
    View 用于 Controller 操作,并据此命名。 (例如:显示,编辑,索引等)

    布局是用于渲染它们的 Controller 的名称。 (例如:application-适用于ApplicationController,契约(Contract)-适用于ContractController,contract_customers_view-适用于ContractCustomersViewController)

    纠结之处在于 View 也可以包含布局信息。有时只有 View 文件(没有布局文件)。而且任何一种都可以用模板语言(如ERb或HAML)编写,因此它们都可以称为模板。

    部分确实就是它所说的:它只是可以使用(并有望重新使用)的一部分。您可以加入 View 或布局的一部分并对其进行重构,以便您可以重新使用它-现在只是部分 View 或布局。局部的常见用法包括头部,导航部分(包括页眉,页脚等),可以在其中重构以实现可重用性的地方,以及通过将其用于语义和逻辑部分来改善编码样式和可读性。 (这就是为什么人们将它们比作子例程。)

    另一个可以获取有关 View 和布局以及它们与众不同的上下文的地方是ActionView实际生成输出所经过的步骤(流程)-使用所有这些部分来渲染某些内容。例如,重要的是要了解何时创建(或不创建)布局,以便您了解在特定时间哪些变量和参数可用或不可用。
    (顺便说一下,我正在与Rails 4,一起工作。)

    有了所有这些,现在想象一下,所有布局信息都在您的 View 中,并且您的 View 是用模板语言(ERb,HAML等)编写的,并且您已经使用了partials来使所有内容都变得更好。对于您的应用程序,您可能没有任何布局文件,而布局文件中有一个很大的 yield,实际内容(由您的 Controller 和模型生成)存放在该文件中。

    希望这可以帮助其他人掌握 View 和布局。 (我想我应该建议将这样的内容放入指南中。)

    关于ruby-on-rails - Rails中的模板,局部和布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14391374/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com