Hello StackOverflow社区,
我想知道如何在Ruby on Rails上实现应用程序范围以及特定于页面的视图。
我将所有导航栏,页脚等放在应用程序范围的视图(application.html.erb)中,因此它充当了我的应用程序上每个视图的基本布局(我认为应用程序范围视图的真正目的)。
从我现在看到的,Rails将运行时的代码,应用程序范围的视图和主页/索引视图放在一起。样式表,脚本等链接是没有问题的,我很高兴他们在应用程序范围内导入,节省时间。
如何指定导入资产的Rails&特定视图的内容,例如home / index?
如何以下列方式形成代码?
app wide view(元标记,导航栏,标题,全局样式表)+页面特定内容(标题,正文)+ app宽视图(页脚,javascripts)
我认为接近它的最佳方法是将其拆分为标题,正文和页脚。我应该创建另一个文件并让它作为页脚,让app.html.erb成为标题吗?
谢谢!
答案 0 :(得分:3)
最常见的方法是在Layout
中包含页眉和页脚,从而产生页面内容。
如果您希望资源仅包含在特定网页中,或者需要在布局的其他位置展示,则可以使用content_for
和yield
来实现此目标。
例如,在您的网页浏览中:
<% content_for :title do %>The title of this page!<% end %>
在您的布局中,您希望输出标题标记:
<title><%= content_for?(:title) ? yield(:title) : "Default page title goes here" %></title>
同样的方法可用于您希望仅包含在特定页面上的javascripts或样式表。
例如,在一些需要jQuery的页面中:
<% content_for :per_page_javascripts do %>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<% end %>
在您的布局中(页眉或页脚,无论您认为JS应该去哪里):
<%= yield(:per_page_javascripts) %>
以下是可能有用的指南: http://guides.rubyonrails.org/layouts_and_rendering.html#using-the-content-for-method