Я бы использовал jQuery (или просто js), чтобы связать обработчик события «change» с file_field_tag.Используйте функцию jQuery .val () для file_field_tag, чтобы проверить, присутствует ли файл.Пример кода ниже:
<%= form_tag(import_substitutions_path, :method => :post, multipart: true) do %>
<%= file_field_tag 'file-field' %>
<%= submit_tag "Import CSV", disabled: true, id: 'csv-import-submit' %>
<% end %>
<script>
var csvField = $('#file-field');
var submitButton = $('#csv-import-submit');
$(csvField).change(function() {
var fileValue = $(csvField).val();
if ( fileValue.empty() ) {
$(submitButton).attr("disabled", true);
} else {
$(submitButton).attr("disabled", false);
}
})
</script>
Я мог бы также предложить альтернативное решение простого добавления опции required: true
в file_field_tag:
<%= file_field_tag 'file-field', required: true %>