我有一个小问题,我似乎无法弄清楚。
常规闪光灯的工作原理与预期一样。
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 辅助函数。