gpt4 book ai didi

ruby-on-rails - 初始化会破坏rails中的布局设置吗?

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

在其中一个 Controller 中,我需要特定的布局。我在开头添加了 layout 。效果很好。

但是如果我为某些基于 Controller 的变量添加一个initialize函数。 Rails 似乎只是忽略了layout 命令。

有人有同样的问题吗?我该如何修复它?

class AdminsController < ApplicationController

layout "layout_admins"

def initialize
@Title = "Admins"
end

def index
....... some code here
end
end

最佳答案

initialize 在 Rails 内部使用,用于初始化 Controller 的新实例,以便它可以处理其上的请求。通过以这种特定方式定义此方法,您正在破坏 Rails

有办法!隧道尽头有一盏灯。彩虹尽头有一桶金:

def initialize
@title = "Admins"
super
end

看到那个小小的super 调用了吗?这将调用父类(super class)的 initialize 方法,完全执行 Rails 在其他情况下会执行的操作。现在我们已经介绍了如何以的方式进行操作,让我们介绍一下如何以“官方认可的”Rails 方式进行操作:

class AdminsController < ApplicationController
before_filter :set_title


# your actions go here

private
def set_title
@title = "Title"
end
end

是的,代码稍微多了一点,但是其他人看到你的代码会减少一些挫败感。这是传统的做法,我强烈鼓励遵循惯例而不是做“魔术”。

编辑:如果您使用的是 Rails 5,那么您需要使用 before_action 而不是 before_filter

关于ruby-on-rails - 初始化会破坏rails中的布局设置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920748/

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