渲染应用程序范围的视图以及Ruby on Rails中的特定视图

时间:2014-01-28 04:58:56

标签: ruby-on-rails model-view-controller view render

Hello StackOverflow社区,

我想知道如何在Ruby on Rails上实现应用程序范围以及特定于页面的视图。

我将所有导航栏,页脚等放在应用程序范围的视图(application.html.erb)中,因此它充当了我的应用程序上每个视图的基本布局(我认为应用程序范围视图的真正目的)。

从我现在看到的,Rails将运行时的代码,应用程序范围的视图和主页/索引视图放在一起。样式表,脚本等链接是没有问题的,我很高兴他们在应用程序范围内导入,节省时间。

如何指定导入资产的Rails&特定视图的内容,例如home / index?

如何以下列方式形成代码?

app wide view(元标记,导航栏,标题,全局样式表)+页面特定内容(标题,正文)+ app宽视图(页脚,javascripts)

我认为接近它的最佳方法是将其拆分为标题,正文和页脚。我应该创建另一个文件并让它作为页脚,让app.html.erb成为标题吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

最常见的方法是在Layout中包含页眉和页脚,从而产生页面内容。

如果您希望资源仅包含在特定网页中,或者需要在布局的其他位置展示,则可以使用content_foryield来实现此目标。

例如,在您的网页浏览中:

<% 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