aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/app/helpers/active_storage/file_field_with_direct_upload_helper.rb
blob: 7c5fd0eb5508db71f3a9abcb32e105d3ba50ae6f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module ActiveStorage
  # Temporary hack to overwrite the default file_field_tag and Form#file_field to accept a direct_upload: true option
  # that then gets replaced with a data-direct-upload-url attribute with the route prefilled.
  module FileFieldWithDirectUploadHelper
    def file_field_tag(name, options = {})
      text_field_tag(name, nil, convert_direct_upload_option_to_url(options.merge(type: :file)))
    end

    def file_field(object_name, method, options = {})
      ActionView::Helpers::Tags::FileField.new(object_name, method, self, convert_direct_upload_option_to_url(options)).render
    end

    private
      def convert_direct_upload_option_to_url(options)
        options.merge('data-direct-upload-url': options.delete(:direct_upload) ? rails_direct_uploads_url : nil).compact
      end
  end
end