ruby-on-rails – 为什么Rails使布局选择成为控制器问题,而不是视图关注?我可以从视图中选择一个布局吗?

也许有一个技术/实现的原因,但在我看来,“布局”是视图层的一部分,尽管如此,Rails似乎只允许在控制器级别指定布局.

我的控制器不应该关心布局…模板应该.有没有办法从.erb文件中指定要使用的布局?

就像是:

<%= with_layout :news_Feed do %>

  <p>
    My markup in here.
  </p>

<% end %>

或者你可以想到的任何其他实现…但是文档只是从控制器的角度来看这个布局.

也许这不是很难实现一个with_layout帮助器.

编辑|我发现我正在寻找什么:

<% render :layout => "some_layout" do %>
  <p>
    My markup here
  </p>
<% end %>

现在提供您的ActionController有:

class ApplicationController < ActionController::Base
  layout nil

然后每个模板都可以选择自己的布局,使用这种方法.

如果您在应用/布局中放置布局,其名称与控制器匹配,那么将使用该布局,因此您不必严格地指定它们是否相同.无论哪种方式,花花公子如何写你的模板现在完全控制它,而不是花花公子谁写的控制器:)

解决方法

我做了一些研究,我没有找到任何类似于你想要的解决方案.

我认为这可能与通过在app / views / layouts下命名一个文件your_controllers_name.html.erb来指定除认值之外的布局来实现.如果特定控制器始终使用相同的布局,则可以从控制器中删除任何逻辑.也许这是你要找的?如果您没有布局匹配的控制器名称,则将使用认的application.html.erb.

如果您需要有条件地呈现不同的布局,则需要在控制器中进行该决定.否则,您将把决策逻辑推向您的观点.您的观点不应该因为控制器做出决定而设置视图需要的任何必要数据,而是决定所需的布局.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...