Rails 5.2 Загрузка изображений TinyMCE с помощью Amazon S3 - PullRequest
2 голосов
/ 22 февраля 2020

Я использую этот учебник, чтобы попытаться облегчить загрузку изображений с помощью редактора TinyMCE WYSIWYG в моем приложении rails 5.2.

До сих пор я реализовал весь код в учебнике и все работает отлично, но когда я пытаюсь загрузить изображение, я получаю сообщение об ошибке «Получен неверный ответ с сервера».

В моем heroku logs я получаю следующее:

FATAL -- : [527c4468-9ebe-475a-97a9-380bfc327aab] ActionController::RoutingError (uninitialized constant #<Class:0x000055b6d991e020>::EditController
2020-02-22T17:34:07.814727+00:00 app[web.1]: Did you mean?  DeviseController):

Вот маршрут, который я использую:

post '/tinymce_assets', to: 'article/edit#image_upload'

С этими методами контроллера:

  def image_upload
    file = params[:file]
    url = upload_file(file)
      render json: {
        image: {
          url: url
        }
      }, content_type: "text/html"
  end


  private

    def upload_file(file)
      s3 = Aws::S3::Resource.new(region:ENV['AWS_REGION'])
      obj = s3.bucket(ENV['S3_BUCKET_NAME']).object('articles/images/content/' + filename(file))
      obj.upload_file(file.tempfile, {acl: 'public-read'})
      obj.public_url.to_s
    end

    def filename(file)
      file.original_filename.gsub(/[^a-zA-Z0-9_\.]/, '_')
    end

И это для его инициализации:

<%= f.text_area :body, class: "tinymce", rows: 20, cols: 120 %>
<%= tinymce :content_css => asset_path('application.css')%>

...


<script>
  $(document).ready(function() {
    tinymce.init({
      selector: "textarea.tinymce",  // change this value according to your HTML
    });
  });
</script>

Кто-нибудь может увидеть, где я здесь не так?

1 Ответ

3 голосов
/ 24 февраля 2020

Rails пытается найти EditController из-за вашего маршрута: post '/tinymce_assets', to: 'article/edit#image_upload'

Этот маршрут предполагает, что контроллер, на который он должен смотреть, Article::EditController. Поскольку вы на самом деле ищете ArticlesController, вам следует изменить маршрут на:

post '/tinymce_assets', to: 'articles#image_upload'

Может помочь документация по маршрутизации Rails, в частности, разделы 2.2 и 2.6. https://guides.rubyonrails.org/routing.html

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