更改select_tag(在form_tag内部)选择后,如何删除Flash消息?

时间:2019-06-29 07:19:40

标签: ruby-on-rails

我有一个带有下拉菜单的Rails表单,如下所示:

<%= form_tag generate_report_path(:header => true) do |f| % >
<div class="container-fluid">
  <div style="padding-right:10px">

    <%= select_tag(:report_id, options_for_select(
      [["Select Report Type", 0],
      ["Report1", 1],
      ["Report2", 2],
      ["Report3", 3]]), id: "report_selection") %>


      <%= hidden_field_tag :format, :pdf %>

      <%= button_tag "Generate Report", class: 'btn btn-sm btn-primary'%>

当用户在下拉列表中选择一个条目并单击“生成报告”按钮时,将向用户显示flash message

现在,当用户从下拉菜单中选择其他条目时,我希望Flash消息消失。

我该如何实现?

请帮助!

  • 我想到的解决方案的第一步是-如果下拉选择可以某种方式调用redirect_to,那么我们可以将空的Flash消息集合传递给此redirect_to由于Flash集合中没有Flash消息,因此这应该有助于我们删除Flash消息。在此前提下(我不确定这是否可行),我一直在考虑以下几点:

  • 我一直无法在不致电redirect_to的情况下成功显示Flash消息[即使我发现一些声称可以实现的文章]

  • 更改下拉选项,我相信会调用form_tag中提到的网址-在这种情况下为generate_report_path-正确吗?

  • 但是调用generate_report_path似乎可以执行render,但是似乎不能执行redirect-这是正确的吗?
  • 完成redirect后,我的理解是将调用application.html.erb,该代码可以具有如下所示的代码,呈现所有的Flash通知和警报-这是正确的吗?
  # app/views/layouts/application.html.erb

  <% flash.each do |key, value| %>
    <div class="lead text-center <%= flash_class(key) %>">
      <%= value %>
    </div>  
  <% end %>

  <%= yield %>
  • 但是当application.html.erb发生时[由于调用render的下拉选择的更改而会调用generate_report_path吗?
  • 如果以上答案为是,则将空的Flash消息集合传递给generate_report_path应该可以解决此问题,我想[如果Flash消息集合为空白,则application.html.erb将尝试呈现所有Flash消息收集条目,并且由于没有任何消息条目,因此将删除屏幕上已经显示的即显消息-这应该可以解决我的问题]?我试过了,但似乎不起作用-因此我想上述问题的答案是否定的?
  • 如果上述问题的答案为“否”,那么将空的Flash消息收集传递给generate_report_path将没有帮助-正确吗?

0 个答案:

没有答案