【问题标题】:Does every rails app have a default application.html.erb created in their layouts?是否每个 Rails 应用程序都在其布局中创建了默认的 application.html.erb?
【发布时间】:2011-06-01 17:18:48
【问题描述】:

我只是有一个普遍的疑问,我想清除 Rails。我目前正在为项目特定目的开发 Rails 2.0.2,我对这个版本的 Rails 有疑问。

我在我的 Rails 应用程序中的“帖子”上做了一个基本的脚手架......类似于 ruby script/generate scaffold posts 。这在我的 app/views/layouts 中为我创建了一个 posts.html.erb 文件。我在许多博客/屏幕转换中看到他们说,当我们添加 Javascript(JS) 文件时,例如 for那些实现 jquery 等的我们需要在我们的"application.html.erb"files 中包含必要的文件。现在因为我的应用程序中没有任何类似的东西。Rails 默认情况下会在我的布局中使用我的posts.html.erb相当于application.html.erb..?

还是我需要在我的 rails 应用中显式创建 application.html.erb?

我对这个问题的主要关注是,如果我有类似posts.html.erb 的东西,是否会包含 JS 文件,或者是这样。它应该只在 application.html.erb 中完成。

谢谢你..

【问题讨论】:

    标签: ruby-on-rails layout views


    【解决方案1】:

    对于PostsController,Rails 将首先查找app/views/layouts/posts.html.erb 文件。只有当它没有找到这个特定于控制器的布局时,它才会回退到app/views/layouts/application.html.erb

    【讨论】:

      【解决方案2】:

      默认情况下,Rails 是否将我的布局中的 posts.html.erb 视为等效的 application.html.erb..?

      是的。对于 PostsController,它将(按照惯例)将 layouts/posts.html.erb 作为整体布局模板。

      如果您删除此文件,它将退回到 layouts/application.html.erb 布局。

      我对这个问题的主要关注是如果我有类似posts.html.erb的东西,是否会包含JS文件或者......它应该只在application.html.erb中完成......

      您必须在每个布局中包含所有必要的 JS/CSS,因为没有布局继承。

      如果您想要多个布局,您可以将部分重构为部分(例如:<head> 位)。

      【讨论】:

      • -如果没有布局继承,那么你认为jquery.js和其他JS文件如何传递给不同的视图(.html.erb文件和.js.erb文件)以获得jquery相关功能像那些运行 AJAX 的..?同样从您的回答看来,在 application.html.erb 中包含所有 js 文件和样式表文件会更有意义,因为它遵循 Rails 中的 DRY 原则,提供对各种控制器及其相关视图的所有全局访问范围。请正确如果我错了,我..
      • 首先,请阅读:guides.rubyonrails.org/layouts_and_rendering.html。它将帮助您更好地了解布局的工作原理。
      • 没有布局继承,因为如果你有两个不同的布局,你不能从另一个继承。请注意此处 layoutsviews 之间的区别。布局是一个整体页面模板,其中包含(一个或多个)yield 语句,Rails 在其中呈现视图(因此在运行时 Rails 将视图与所选布局组合并呈现页面)。
      【解决方案3】:

      当您执行“rails new ProjectName”时,应该已经为您生成了一个 app/views/layouts/application.html.erb 文件

      确保您有一个...它控制您网站的总体布局。

      【讨论】:

      • -它不是为我创建的..在我的情况下可能是因为我使用的是 Rails 2.0.2 ..感谢您的回答..
      猜你喜欢
      • 2012-12-30
      • 2012-03-22
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2011-10-26
      • 1970-01-01
      相关资源
      最近更新 更多