Rails flash消息未在redirect_to中显示

kim*_*njj 7 ruby-on-rails

我有一个控制器

flash[:error] = "Message"
redirect_to :root
Run Code Online (Sandbox Code Playgroud)

:root由另一个控制器处理,视图具有

<% if flash[:error] %>
  <p><%= flash[:error] %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但没有任何表现.我插入<%= debug controller.session%>,这是我得到的

"flash"=>#<ActionDispatch::Flash::FlashHash:0x2e79208 @used=#<Set: {}>, @closed=false, @flashes={}, @now=nil>}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Jus*_* D. 5

检查stackoverFlow问题:Rails:redirect_to with:error,但flash [:error]为空.

正如Rails API中所述:notice和:alert默认应用为flash哈希值.如果需要设置:error值,可以这样做:

redirect_to show_path, :flash => { :error => "Insufficient rights!" }
Run Code Online (Sandbox Code Playgroud)

  • 确认确认这不起作用。 (2认同)

小智 5

我知道这已经晚了,但我在 Rails 4 中遇到了同样的问题。如果您在 中使用 _url 帮助程序redirect_to,则将出现闪烁消息:

def update_post
    respond_to do |format|
        if @post.update(post_params)
            format.html { redirect_to show_post_meta_url, notice: 'Post was successfully updated.' }
        else
            format.html { render action: 'edit_post' }
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助。