Simple form oraz direct upload w ActiveStorage


#1

Witam,
Czy ktoś z Was miał okazje wykorzystac simple_form oraz ActiveStorage z direct_upload: true ?

Chciałbym podczas uploadu widzieć stopień zaawansowania (progress) niestety w wykorzystując simple form nie mogę uzyskać efektu. Wydaje się że coś robię źle.

Nie wykorzystując simple form a form_for wszystko wydaje się działać. Dla

 <%= form_with(model: post, local: true) do |form| %>
  <% if post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% post.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :title %>
    <%= form.text_field :title %>
  </div>

  <div class="field">
    <%= form.label :body %>
    <%= form.text_area :body %>
  </div>

  <div class="field">
    <%= form.label :cover_photo %>
    <%= form.file_field :cover_photo, direct_upload: true %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

Pliki js oraz css znajdują się w assets i wszystko działa jak należy
Jednak gdy przerobie formularz na simple form

<%= simple_form_for @post do |f| %>
<%= f.input :title %>
<%= f.input :body %>
<%= f.input :cover_photo, as: :file, direct_upload: true %>
<%= f.button :submit %>
<% end %>

Nie ma efektu nie widać postępu. Może ktoś miał podobny problem?
Ruby 2.6.3
Rails 5.2.1
Przykład projektu ściągnięty z https://github.com/bratta/file-upload-demo
_form zmodyfikowany jw.


#2

Efekt można uzyskać na dwa sposoby
Jeden z nich to wykorzystanie

f.file_field :cover_photo, direct_upload:true 

Ten sposób jednak nie wyświetli błędów z simple form.
Inne rozwiązanie to przekazanie atrybutów html

<%= f.input :cover_photo, as: :file, input_html: { data: { direct_upload_url: '/rails/active_storage/direct_uploads' } } %>

Lub w haml-u

= f.input :cover_img, as: :file, input_html: { data: { direct_upload_url: '/rails/active_storage/direct_uploads' } }

Mam nadzieje że komuś się przyda.