小编Ted*_*019的帖子

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

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

常规闪光灯的工作原理与预期一样。

flash[:test] = 'Blarrgh'
redirect_to etcs_url
Run Code Online (Sandbox Code Playgroud)

将显示“Blarrgh”,因为我的 application.html.erb 中有此代码

      <% if flash[:test] %>
        <%= flash[:test] %>
      <% elsif flash.now[:test] %>
        <%= flash.now[:test] %>
      <% end %>
Run Code Online (Sandbox Code Playgroud)

我很确定显示 flash.now[:test] 消息的方式只是 flash[:test],但我在底部添加了 elsif 以防万一,因为事情不起作用。

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

flash.now[:test] = 'Blarrgh'
render :edit
Run Code Online (Sandbox Code Playgroud)

什么也没有显示出来。但是,当我将“失败”语句放入视图中然后检查这些值时,flash[:test]/flash.now[:test] 将具有正确的值。例如,['Etc不能为空']

我尝试检查常见错误:没有 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
Run Code Online (Sandbox Code Playgroud)

我将 flash.now b4 放在渲染中。我也没有使用像 form_with 这样的 Rails 辅助函数。

ruby ruby-on-rails render flash-message hotwire

6
推荐指数
1
解决办法
1560
查看次数

标签 统计

flash-message ×1

hotwire ×1

render ×1

ruby ×1

ruby-on-rails ×1