首页 > 解决方案 > Flash 消息仅在重定向两次后显示

问题描述

flash[:errors] 在创建方法中的 redirect_to 之后不显示。但是,如果我发送另一个无效表单,它会显示在第二个和所有后续重定向中。当没有错误时,flash[:success] 也是如此。

我已经尝试在这个和我重定向到的路由中使用 flash.keep,并且视图工作,因为消息确实在多次重定向后出现。我想知道是否是因为重定向也是渲染的路由?

In Controller:

def create
    user = User.create(user_params)
    if user.errors.any?
        flash[:errors] = user.errors.full_messages
        redirect_back(fallback_location: root_path)
    else
        flash[:success] = "USER SUCCESSFULLY CREATED"
        redirect_to root_path
    end
end

In Views:

<% if flash[:errors] %>
    <% flash[:errors].each do |error| %>
        <p style="color:red;"><%= error %></p>
    <% end %>
<% end %>

AND:

<% if flash[:success] %>
    <p style="color: red;"><%= flash[:success] %></p>
<% end %>

第一次重定向后不显示任何闪烁消息。在或更多重定向之后,将显示 Flash 消息

标签: ruby-on-rails

解决方案


推荐阅读