使特定的 Rails 视图使用某种布局

Posted

技术标签:

【中文标题】使特定的 Rails 视图使用某种布局【英文标题】:Make specific Rails view use a certain layout 【发布时间】:2012-06-26 02:15:08 【问题描述】:

有没有办法让某个 Rails 视图(例如index.html.haml)使用某个模板?这是在控制器中完成的,如下所示:

layout 'my_layout'

是否可以直接在视图中要求布局?谢谢。

【问题讨论】:

This question addresses your needs 这似乎也是从控制器设置布局。 Rails 提供了从控制器设置布局作为标准程序的工具。可能有一些模糊的方法可以从视图中设置它,但为了与 MVC 保持一致,最好由控制器做出这些决定。这就是它的设计方式,我建议不要试图颠覆它。 我正在尝试修改没有控制器的 Devise 视图。 【参考方案1】:

根据 Rails 指南,Layouts and Rendering

“当 Rails 将视图呈现为响应时,它通过将视图与当前布局组合来实现”

因此,一旦视图开始呈现,似乎就不可能更改布局。

此外,我建议确定布局更多的是控制器功能。如果您的视图中有试图确定布局的逻辑,我敢打赌最好将逻辑放在控制器中。

【讨论】:

以上是关于使特定的 Rails 视图使用某种布局的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局舍入视图?

无法使用 Rails 上的自定义布局访问视图上的实例变量

渲染布局和视图,rails

Rails-覆盖在使用部分或特定控制器视图时的页面元素

Yii:如何在视图中定义部分布局?

Rails 3.1:视图不在命名空间布局中呈现