gpt4 book ai didi

ruby-on-rails - 如何使用 Rails 实例的公共(public)方法执行?在 if-else 中

转载 作者:行者123 更新时间:2023-12-02 20:23:46 24 4
gpt4 key购买 nike

如何使用Ruby on Rails 方法执行?在 if else 语句中?

我尝试使用这个 StackOverflow anwser在我下面的例子中:

if condition
does something
elsif redirect_to(records_path)
performed?
does another thing
else
yet another thing
end

但这只是重定向而不检查是否执行。

我希望它检查是否执行了到 records_path 的重定向以及何时执行某项操作(或在我的示例中“执行另一项操作”)

我也试过这个:

elseif records_path.performed?

还有这个:

elseif redirect_to(records_path) performed?()

以及介于两者之间的所有事物。

有人可以解释它是如何完成的以及我如何从 docs 中得到它吗? ?

最佳答案

在 Controller 操作中,当我们键入 renderredirect_to 时,它们不会立即执行,但会排队并在方法完成后执行。所以这允许在 Controller 操作中有双重渲染或 redirect_to,这将产生一个错误(因为 rails 不知道要执行哪个)。所以这就是为什么在 rails 中他们添加了一个方法 performed? 这将指示 renderredirect_to 是否已经被调用(排队)或不是。

在大多数情况下,这并不是真正需要的,因为通常您的 Controller 代码非常简单。

澄清一下:performed? 实际上并没有测试 redirect_to 已经完成,它只是测试渲染或重定向到是否被调用/排队。此外,redirect_to 不会返回指示是否已完成的 bool 值。

所以你的代码应该是这样的:

if condition
does something
else
redirect_to(records_path)
end
if performed?
# the redirect-to was executed
does another thing # but not a render or redirect
else
yet another thing
# and could be a render or redirect
# if not the normal view will be rendered
end

请注意,在这个简单的示例中,performed? 只是 condition 的否定,因此您可以轻松地将它们压缩在一起。

关于ruby-on-rails - 如何使用 Rails 实例的公共(public)方法执行?在 if-else 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50581559/

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