У меня есть форма 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
не поможет - это правильно?
)