【问题标题】:Render application wide view plus specific view in Ruby on Rails在 Ruby on Rails 中呈现应用程序范围的视图和特定视图
【发布时间】:2014-02-19 06:07:06
【问题描述】:

你好 StackOverflow 社区,

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

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

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

如何指定 Rails 导入特定视图的资产和内容,例如主页/索引?

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

应用范围视图(元标记、导航栏、标题、全局样式表)+ 页面特定内容(标题、正文)+ 应用范围视图(页脚、javascript)

我认为处理它的最佳方法是将其拆分为页眉、正文和页脚。我应该创建另一个文件并让它充当页脚并让 app.html.erb 成为页眉吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    最常见的方法是在您的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>
    

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

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

    【讨论】:

    • 谢谢。我对 MVC 概念和 RoR 完全陌生。难怪,我不明白yield 做了什么。现在,我愿意。很方便。我做的最后一个项目,我来回复制所有代码。这就是为什么在看到 ASP.NET MVC 是如何工作的之后,我问自己“这在 Rails 上能工作吗?”它确实如此。谢谢!
    • 很高兴为您提供帮助。祝你的项目一切顺利:0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多