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

前端之家收集整理的这篇文章主要介绍了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.

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

猜你在找的Ruby相关文章