gpt4 book ai didi

ruby-on-rails - 如何确定 Controller 操作是否已呈现(而不是重定向?)

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

performed?方法返回 true如果应用程序已重定向或呈现,则在 Controller 中。

如何确定应用程序是否呈现(而不是重定向)?

Judging from the performed? docs ,我可以看看@performed_render ,但这似乎很hacky。

编辑:我为什么要这样做?

我试图缓存 Controller 操作的输出,仅在它导致渲染(而不是重定向)的情况下。这是我现在使用的代码:(基于 render-caching)

  def render_with_cache(options = {})
key = ([request.request_uri, request.format] | (options.delete(:key_additions) || [])).join("::")
body = Rails.cache.read(key)

if body
render :text => body
else
yield if block_given?
render unless performed?
if @performed_render
Rails.cache.write(key, response.body, options) # :expires_in
end
end
end

最佳答案

rails 3.2+ 现在使用名为 performed? 的方法用于确定是否已经执行了渲染或重定向。

人为的例子:

def index
redirect_to not_found_path unless authenticated?
render action: "show_all" unless performed?
end

关于ruby-on-rails - 如何确定 Controller 操作是否已呈现(而不是重定向?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2129094/

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