@urban_will
В Ruby on Rails загрузка файлов обрабатывается с помощью гема CarrierWave. Этот гем позволяет легко загружать файлы и обрабатывать их.
Подключите гем CarrierWave в вашем проекте, выполнив команду:
1
|
gem 'carrierwave' |
Затем создайте модель, которая будет хранить информацию о загруженных файлах. Для этого создайте файл миграции и выполните миграцию:
1 2 |
rails generate model Document title:string file:string rails db:migrate |
Далее создайте загрузчик, который будет обрабатывать файлы. Для этого выполните команду:
1
|
rails generate uploader File |
Эта ко***** создаст файл настройки загрузчика в папке app/uploaders.
В вашей модели добавьте строку:
1
|
mount_uploader :file, FileUploader |
Эта строка связывает загрузчик с полем модели, которое будет хранить имя файла.
Наконец, в вашем контроллере добавьте метод для загрузки файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def upload @document = Document.new(document_params) if @document.save redirect_to @document else render 'new' end end private def document_params params.require(:document).permit(:title, :file) end |
В файле представления добавьте форму для загрузки файла:
1 2 3 4 5 6 7 8 9 |
<%= form_for @document, url: { action: "upload" }, html: { multipart: true } do |f| %> <%= f.label :title %> <%= f.text_field :title %> <%= f.label :file %> <%= f.file_field :file %> <%= f.submit %> <% end %> |
Сохраните этот файл в папке app/views/documents/new.html.erb.
Теперь вы можете загружать файлы в вашем приложении Ruby on Rails!