2014-01-28 145 views
1

你好的StackOverflow社区应用宽视野加上红宝石具体来看,渲染on Rails的

我想知道我如何能实现on Rails的Ruby的应用广泛多页的特定视图。

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

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

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

如何以如下方式组成代码?

应用广视角(meta标签,导航栏,标题,全球样式表)+网页具体内容(标题,正文)+应用广视角(页脚,Java脚本)

我想接近它就是分裂最好的方法它到标题,正文和页脚。我应该创建另一个文件并让它充当页脚并让app.html.erb成为页眉吗?

谢谢!

回答

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> 

同样的方法可以用于Java脚本或您只想包含在特定页面上的样式表。

例如,在一些网页需要的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

+0

谢谢。我对MVC概念和RoR完全陌生。难怪,我不明白“收益率”是什么。现在,我知道了。很方便。我做的最后一个项目,我将所有代码来回复制。这就是为什么在看到ASP.NET MVC如何工作后,我质问自己“这个工作是否会在Rails上工作?”它确实如此。谢谢! – Adam

+0

很高兴为您提供帮助。所有与您的项目最好:0) – doctororange