代码之家  ›  专栏  ›  技术社区  ›  user7055375

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

  •  0
  • user7055375  · 技术社区  · 9 年前

    我很难在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-notice" ).

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

    2 回复  |  直到 9 年前
        1
  •  1
  •   NM Pennypacker    9 年前

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

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

    <p class="flash-notice"><%= params[:notice] %></p>
    

    我开发的大多数Rails应用程序都设置为 session[:flash] 在控制器方法中,在这种情况下,您将执行以下操作:

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

        2
  •  0
  •   Mark    9 年前

    尝试

    flash[:notice] = 'bla'
    redirect_to controller: "users", action: "edit"
    

    redirect_to edit_user_path(user), notice: 'bla'
    

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

    推荐文章