Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Backbone.js中组织嵌套模板_Ruby On Rails_Templates_Backbone.js - Fatal编程技术网

Ruby on rails 在Backbone.js中组织嵌套模板

Ruby on rails 在Backbone.js中组织嵌套模板,ruby-on-rails,templates,backbone.js,Ruby On Rails,Templates,Backbone.js,目前正在将Rails 3.2+应用程序转换为使用Backbone.js管理其前端。转换前,应用程序在application.html.erb中呈现了多个布局部分。要可视化,请使用其左列和页脚进行思考,所有导航都发生在中心内容区域。重点是,左/右列、页脚和页眉中的内容不是静态的 下面是我所想的application.jst.eco的样子。如果每个注释行都是一个位置,则可以呈现另一个模板 <!-- layouts/header --> <div class="row-fluid"

目前正在将Rails 3.2+应用程序转换为使用Backbone.js管理其前端。转换前,应用程序在application.html.erb中呈现了多个布局部分。要可视化,请使用其左列和页脚进行思考,所有导航都发生在中心内容区域。重点是,左/右列、页脚和页眉中的内容不是静态的

下面是我所想的application.jst.eco的样子。如果每个注释行都是一个位置,则可以呈现另一个模板

<!-- layouts/header -->

<div class="row-fluid">
  <div id="left-column" class="span3">
    <!-- layouts/left_column -->
  </div>

  <div class="span6">
    <section id="content">
      <header>
        <!-- notices -->
      </header>
      <!-- main content -->
    </section>
  </div>

  <div id="right-column"class="span3">
    <!-- layouts/right_column -->
  </div>
</div>

<!-- layouts/footer -->

我应该如何组织主干中的模板来复制application.html.erb结构?我想的方向对吗


此外,我对主干应用程序的入口点感到困惑。由于我仍将在application.html.erb中调用
,并通过erb视图预加载主页数据,如果在主干模板中定义了更大的布局,这一切将如何结合起来呢?

有多种方法可以做到这一点,但作为一个示例,我就是这样做的

首先,您实际上根本不必使用rails部分,除非需要考虑对非javascript浏览器的支持。backbone.js应用程序的典型流程是:

  • 服务器呈现基本布局,包括
    等,但带有实际内容的占位符。例如,在我的应用程序中,我有导航栏的占位符和主要内容的占位符
  • 主干应用程序中的主应用程序类(通常为
    app
    )创建一个路由器,您可以从路由器的
    initialize
    方法或从您所在页面的路由处理程序创建视图,并将视图呈现到页面上的占位符中。在我的例子中,由于导航栏从未被调出,我在路由器的
    initialize
    方法中呈现它,然后在路由处理程序中呈现实际页面。(有关如何在页面上实际呈现视图的一些重要提示,请阅读。)
  • 如果希望具有复合视图(例如,项目列表,其中每个项目都有自己的视图),则将在父级中呈现这些视图,并将它们附加到父级元素(而不是直接附加到文档)。这会使页面中的元素保持独立,这一点很重要
  • 主干网已启动(通过
    主干网.history.start
    ),从此主干网接管
  • 在本例中,您可能希望为左/右列以及主内容和标题(注意事项)创建视图,在后两个(标题和主内容)的情况下,可能会将其作为复合视图


    希望对你有所帮助,可以提供更多的细节,只是问一些具体的问题。p、 我使用它来呈现复合视图,以确保它们在交换时正确地从DOM中移除和解除绑定,以避免内存泄漏等。

    哈哈,这是一个合法的单页应用程序。如果您的目标是不呈现任何超出您绝对必须呈现的服务器端模板,则不打算使用rails部分,这似乎是一种倒退。不过听起来方向不错,谢谢。感谢你链接了这个gem,我们已经在计划如何手动完成这项工作了。是的,如果你使用pushState,那么我实际上认为为你实际路由到的任何页面(可能只是所有视图的一个子集)呈现服务器端视图以支持非js请求不是一个坏主意。我这样做只是为了获取请求。我在回答另一个问题时提到了这个问题: