Как удалить флеш-сообщение при изменении выделения select_tag (внутри form_tag)? - PullRequest
0 голосов
/ 29 июня 2019

У меня есть форма 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отображается для пользователя.

Теперь, когда пользователь выбирает другую запись из раскрывающегося списка, я бы хотел, чтобы флэш-сообщение исчезло.

Как этого добиться?

Пожалуйста, помогите!

(

  • Первый шаг к решению, которое приходит мне в голову, заключается в следующем - если каким-то образом выпадающий выбор может вызвать redirect_to, тогдамы можем передать коллекцию флэш-сообщений emtpy в этот redirect_to, и это должно помочь нам удалить флэш-сообщение, так как во флэш-коллекции нет флэш-сообщений. Учитывая это предположение (я не уверен, возможно ли это вообще), я былобдумывая следующие моменты:

  • Мне никогда не удавалось успешно отобразить флэш-сообщение без вызова redirect_to [хотя я нашел несколько статей, в которых утверждаетсяэто достижимо]

  • Изменение выпадающего списка Я полагаю, что вызовет URL, указанный в form_tag - в данном случае - generate_report_path - это правильно?

  • Но вызов generate_report_path, кажется, делает render, но, кажется, не redirect - это правильно?
  • Когда redirect сделано, я понимаю, что *Будет вызываться 1039 *, который может иметь фрагмент кода, как показано ниже, который отображает все флэш-уведомления и оповещения - это правильно?
  # 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]?
  • Если ответом выше является «да», то передача пустой коллекции флеш-сообщений в generate_report_path должна решить эту проблему, я думаю [если коллекция флэш-сообщений пуста, application.html.erb попытается отобразить все записи коллекции флэш-сообщений, а поскольку их нет, то флэш-сообщение, которое уже отображается на экране, будет удалено - и это должно решить мою проблему]?Я пытался это сделать, но, похоже, это не сработало - поэтому я думаю, что ответ на поставленный выше вопрос - нет?
  • Если ответ на поставленный выше вопрос - нет, тогда передача пустой коллекции флэш-сообщений generate_report_path не поможет - это правильно?

)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...