gpt4 book ai didi

ruby-on-rails - 为什么 Rails 将布局选择作为 Controller 问题而不是 View 问题?我可以从 View 中选择布局吗?

转载 作者:行者123 更新时间:2023-12-04 01:12:00 26 4
gpt4 key购买 nike

也许有技术/实现原因,但在我看来,“布局”似乎是 View 层的清晰部分,但 Rails 似乎只允许在 Controller 级别指定布局。

我的 Controller 不应该关心布局......模板应该。有什么方法可以在 .erb 文件中指定要使用的布局吗?

就像是:

<%= with_layout :news_feed do %>

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

<% end %>

或者你能想到的任何其他实现......但文档似乎只从 Controller 的角度引用了布局。

也许实现 with_layout 不会太难 helper 。

编辑 |我找到了我正在寻找的东西:
<% render :layout => "some_layout" do %>
<p>
My markup here
</p>
<% end %>

现在只要你的 ActionController 有:
class ApplicationController < ActionController::Base
layout nil

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

如果您在 app/layouts 中放置一个布局,其名称与 Controller 匹配,则将使用该布局,因此您不必严格指定它们是否都相同。无论哪种方式,现在如何编写模板的家伙都可以完全控制它,而不是编写 Controller 的家伙:)

最佳答案

我做了一些研究,但没有找到与您正在寻找的类似的任何解决方案。

我认为这可能与以下事实有关,即可以通过命名文件 your_controllers_name.html.erb 来指定默认布局以外的布局。下 app/views/layouts .如果特定 Controller 始终使用相同的布局,则这可以从 Controller 中删除任何逻辑。也许这就是你要找的?如果布局没有匹配的 Controller 名称,则默认 application.html.erb将会被使用。

如果您需要有条件地呈现不同的布局,那么该决定确实需要在您的 Controller 中做出。否则,您会将决策逻辑插入您的 View 中。您的 View 不应该决定它需要什么布局,因为 Controller 在那里做出决定并设置 View 所需的任何必要数据。

关于ruby-on-rails - 为什么 Rails 将布局选择作为 Controller 问题而不是 View 问题?我可以从 View 中选择布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com