Ruby on rails 如何使flash[:notice]显示在我的视图中?

Ruby on rails 如何使flash[:notice]显示在我的视图中?,ruby-on-rails,redirect,view,ruby-on-rails-5,notice,Ruby On Rails,Redirect,View,Ruby On Rails 5,Notice,我很难在Rails 5视图中显示我的通知。我在控制器中设置了此before_filter方法: def check_email_confirmed! redirect_to controller: "users", action: "edit", notice: 'Please confirm your email.' unless current_user.email_confirmed end 在我看来,我有这个 <% if flash[:notice] %> <

我很难在Rails 5视图中显示我的通知。我在控制器中设置了此before_filter方法:

def check_email_confirmed!
  redirect_to controller: "users", action: "edit", notice: 'Please confirm your email.' unless current_user.email_confirmed
end
在我看来,我有这个

<% if flash[:notice] %>
  <p class="flash-notice"><%= flash[:notice] %></p>
<% end %>
但是,尽管我知道通知已被设置,但我在我的URL中看到它,在我的视图中没有调用上面的内容,我没有看到带有class=flash通知的HTML

是否有其他方法可以在重定向中设置flash通知?或者我应该使用重定向吗?有人告诉我,在URL查询字符串中嵌入消息可能存在一些安全风险?

试试看

flash[:notice] = 'bla'
redirect_to controller: "users", action: "edit"
我很肯定

redirect_to edit_user_path(user), notice: 'bla'

也会起作用。出于某种原因,您的语法显然没有选择通知修饰符。但您必须将用户分配给当前用户,才能使其正常工作。

您当前正在使用按键通知设置参数,而不是在会话中设置闪光灯

要以您目前的方式完成此任务,您必须:

<p class="flash-notice"><%= params[:notice] %></p>
除非您有充分的理由将通知文本作为URL参数传递,否则我建议您这样做

unless current_user.email_confirmed
  redirect_to edit_user_path(current_user)
  flash[:notice] = 'Please confirm your email.'
end