是否每个 Rails 应用程序都在其布局中创建了默认的 application.html.erb?
Posted
技术标签:
【中文标题】是否每个 Rails 应用程序都在其布局中创建了默认的 application.html.erb?【英文标题】:Does every rails app have a default application.html.erb created in their layouts? 【发布时间】: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
中完成。
谢谢你..
【问题讨论】:
【参考方案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。它将帮助您更好地了解布局的工作原理。 没有布局继承,因为如果你有两个不同的布局,你不能从另一个继承。请注意此处 layouts 和 views 之间的区别。布局是一个整体页面模板,其中包含(一个或多个)yield
语句,Rails 在其中呈现视图(因此在运行时 Rails 将视图与所选布局组合并呈现页面)。【参考方案3】:
当您执行“rails new ProjectName”时,应该已经为您生成了一个 app/views/layouts/application.html.erb 文件
确保您有一个...它控制您网站的总体布局。
【讨论】:
-它不是为我创建的..在我的情况下可能是因为我使用的是 Rails 2.0.2 ..感谢您的回答..以上是关于是否每个 Rails 应用程序都在其布局中创建了默认的 application.html.erb?的主要内容,如果未能解决你的问题,请参考以下文章
rails 应用程序在 heroku 上找不到 fontawesome 图标