我有一个控制器
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)
我做错了什么?
检查stackoverFlow问题:Rails:redirect_to with:error,但flash [:error]为空.
正如Rails API中所述:notice和:alert默认应用为flash哈希值.如果需要设置:error值,可以这样做:
Run Code Online (Sandbox Code Playgroud)redirect_to show_path, :flash => { :error => "Insufficient rights!" }
小智 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)
希望这对某人有帮助。