gpt4 book ai didi

ruby-on-rails - 在 rails 中为设计 gem 指定布局文件(这是做什么的?)

转载 作者:行者123 更新时间:2023-12-04 06:36:15 27 4
gpt4 key购买 nike

我知道如何为设计指定布局文件。但是我不明白这是如何工作的 .具体来说,在我的layout_name_for_devise下面的代码中如果它是设备 Controller ,则使用。所以我想这一定意味着如果“应用程序”布局不是设计 Controller (在我的情况下是在 app/views/layouts/application.html.haml 中),它将被使用。现在,我有其他布局,例如一个叫做 home 的布局。 .我认为我的观点使用我的 home布局会中断……但事实证明它工作正常。 我不明白这是如何工作的。比如下面的代码运行时,我的app/views/layouts/home.html.haml是怎么回事?布局仍然被正确调用?

class ApplicationController < ActionController::Base
layout :layout_by_resource

protected

def layout_by_resource
if devise_controller?
"layout_name_for_devise"
else
"application"
end
end

最佳答案

良好的夜间休息对大脑有奇效。所以我醒来时明白这是如何工作的……但也因为没有早点看到它而感到很傻。

tl;博士 - 此代码位于 application 内 Controller 。其他 Controller 不调用此代码。这就是它正常工作的原因。

更长的答案:

Rails 尝试根据 Controller 名称查找布局。如果布局不存在,那么 rails 将使用 application布局。

所以在我的 Home Controller rails 首先查找 home布局。因为有一个它使用该布局。

我不确定设计是做什么的,但它不是在寻找名为 devise 的布局。所以它使用 application布局。这就是上面代码运行的时候。由于 Controller 是设计 Controller ,因此布局将更改为“layout_name_for_devise”。

关于ruby-on-rails - 在 rails 中为设计 gem 指定布局文件(这是做什么的?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837961/

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