mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add a direct_upload: true option to file_field_tag and Form#file_field
Then users don't have to bother with manually referring to internal routes.
This commit is contained in:
parent
fd438769cc
commit
696b8c6f43
2 changed files with 19 additions and 1 deletions
|
@ -116,7 +116,7 @@ Active Storage, with its included JavaScript library, supports uploading directl
|
|||
2. Annotate file inputs with the direct upload URL.
|
||||
|
||||
```ruby
|
||||
<%= form.file_field :attachments, multiple: true, data: { direct_upload_url: rails_direct_uploads_url } %>
|
||||
<%= form.file_field :attachments, multiple: true, direct_upload: true %>
|
||||
```
|
||||
3. That's it! Uploads begin upon form submission.
|
||||
|
||||
|
|
|
@ -0,0 +1,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': rails_direct_uploads_url) if options.delete(:direct_upload)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue