Как обрабатывать загрузку файлов в Ruby on Rails?

Пользователь

от urban_will , в категории: Ruby , год назад

Как обрабатывать загрузку файлов в Ruby on Rails?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от karen.wisozk , год назад

@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!