为什么我的 Flash.now 在渲染后没有输出?

Why is my Flash.now not outputting after a render?

我有一个我似乎无法弄清楚的小问题。

普通闪光灯正常工作。

flash[:test] = 'Blarrgh'
redirect_to etcs_url

将显示 'Blarrgh' 因为我的 application.html.erb

中有此代码
      <% if flash[:test] %>
        <%= flash[:test] %>
      <% elsif flash.now[:test] %>
        <%= flash.now[:test] %>
      <% end %>

我很确定显示 flash.now[:test] 消息的方式就是 flash[:test],但我在底部添加了 elsif 以防万一,因为事情无法正常进行。

出于某种原因,当我这样做时

flash.now[:test] = 'Blarrgh'
render :edit

什么都没有显示。但是当我将 'fail' 语句放入我的视图然后检查值时,flash[:test]/flash.now[:test] 将具有正确的值。例如,['等不能为空']

我尝试检查常见错误:没有 CSRF 令牌、隐藏的重定向、flash.now b4 渲染、使用 form_with 而没有 local:true,但是查看我的日志,没有这样的问题.我包含了 CSRF 令牌,我的日志路径是

In logs:
patch /etc/1
(Commit fails, rolls back)
renders application.html.erb which yields etcs/edit.html.erb which renders etcs/_form.html.erb, then renders rest of etcs/edit.html.erb

我正在将 flash.now b4 渲染。我也没有使用 Rails 辅助函数,例如 form_with.

没关系,我想通了。 Rails 显然,有时绝对是疯了。

如果你做一个

Flash.now[:errors] = 'This is an error'
render :edit

这行不通。你必须做

Flash.now[:errors] = 'This is an error'
render :edit, status: :whatever_status

出于某种原因,这不会在浏览器控制台中显示为错误。它只是不显示您的 flash.now。据推测,这是 Rails 7 的涡轮增压器的问题。我希望这可以使某人免于处理大量的痛苦和苦难。

从 Alex 在 Flash is not displayed in the same view in Rails

的回复中找到了答案