Приложение Hello world rails с возможностью загрузки файла dropzonejs-rails - PullRequest
0 голосов
/ 14 декабря 2018

За этим простым hello world и созданным приложением https://iridakos.com/tutorials/2013/11/24/saying-hello-world-with-ruby-on-rails.html.Затем пытается добавить загрузку файла, используя dropzonejs-rails

$cat app/controllers/pages_controller.rb
class PagesController < ApplicationController
  def home
    puts "Honey, I'm home!"
  end
end

$ cat  app/views/pages/home.html.erb
<h1>Hello world!</h1>

 <form action="/fileupload" class="dropzone" id="my-awesome-dropzone"> </form>


$ cat config/routes.rb
Rails.application.routes.draw do
  root to: 'pages#home'
end

Добавлены dropzonejs-rails записи в Gemfile и application.js

$ grep dropzonejs-rails Gemfile
gem 'dropzonejs-rails'

$ grep dropzone app/assets/javascripts/application.js
//= require dropzone 

На веб-странице я могу загрузить файл, но не могучтобы сохранить это.Поскольку я не уверен, как это обеспечить.Это ошибки, как Routing Error No route matches [POST] "/fileupload"

Как решить эту проблему.заранее спасибо.

Редактировать: @Vasilisa Предпочитать хранить файлы в некотором каталоге в файловой системе.(/ некоторые / путь / uploadedfiles)

1 Ответ

0 голосов
/ 15 декабря 2018

Вам нужно будет проложить маршрут, даже если что-то вроде /fileupload действительно не RESTful.

Я склонен настроить ресурс так:

resources :attachments

С соответствующим классом для обработки загруженного объекта.

class Attachment < ApplicationRecord
  has_attached_file :data
end

Вам также понадобится контроллер.

class AttachmentsController < ApplicationController
  before_action :set_attachment, only: :index
  before_action :set_attachment, except: %i[show destroy]

  def index
    render json: { images: @attachments }.to_json
  end

  def create
    if @attachment.update_attributes!(attachment_params)
      render json: { attachment: @attachment }, status: 200
    else
      render json: { error: @attachment.errors }, status: 400
    end
  end

  def show
    render json: { attachment: @attachment }.to_json
  end

  def update
    if @attachment.update_attributes!(attachment_params)
      render json: { attachment: @attachment }.to_json
    else
      render json: { error: @attachment.errors }, status: 400
    end
  end

  def destroy
    if @attachment.destroy
      render json: { message: 'success' }, status: 200
    else
      render json: { message: @attachment.errors }, status: 400
    end
  end
end

Таким образом, вы соответствуете RailsООП логика.Однако ваш маршрут изменится с /fileupload на /attachments.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...