Якщо ви натрапили на цю сторінку, значить Ви як мінімум чули та напевно знаєте що таке git і з чим його їдять. Отож, для початку потрібно зареєструватися на GitHub.com. Процедура тривіальна, тому зупинятися на цьому моменті не будемо.
Якщо ви натрапили на цю сторінку, значить Ви як мінімум чули та напевно знаєте що таке git і з чим його їдять. Отож, для початку потрібно зареєструватися на GitHub.com. Процедура тривіальна, тому зупинятися на цьому моменті не будемо.
Прийом файлу на "борт" в Rails виглядає так
1 2 3 4 5 6 7 |
uploaded_io = [:filename] if uploaded_io.present? File.open(Rails.root.join(path_to_upload, filename), 'wb') do |file| file.write(uploaded_io.read) end end |
У реальному проекту, наприклад для товару потрібно мати картинку, код буде наступним:
У view'і форма має приблизно такий вигляд
1 2 3 |
<%= bootstrap_form_for(@tovar,url: admin_tovars_path) do |f| %> <%= f.file_field :filename,{label: "Файл", prompt: "Виберіть файл"} %> <%= end %> |
У контролері
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
def update @tovar = Tovar.find_by(id: params[:id]) if @tovar.update(tovar_params) file_upload params[:id] flash[:success] = 'Дані успішно збережені' redirect_to admin_tovars_path else flash[:error] = 'Помилка оновлення товару' render :edit end end def file_upload id uploaded_io = params[:tovar][:filename] if uploaded_io.present? file_delete id filename=id.to_s+'_'+uploaded_io.original_filename File.open(Rails.root.join('public', 'uploads','tovars', filename), 'wb') do |file| file.write(uploaded_io.read) end Tovar.update(id,filename: uploaded_io.original_filename) end end def file_delete id tovar=Tovar.find_by(id: id) if tovar.filename.present? file_path = Rails.root.join('public', 'uploads', 'tovars', (id.to_s + '_' + tovar.filename)) if File.file?(file_path) File.delete(file_path) Tovar.update(id,filename: nil) end end end |