cloudinary: "uploaded_file = params [: person] [: picture] .path" работает на локальном сервере, но не на сервере - PullRequest
0 голосов
/ 06 июня 2019

Загрузка изображений с помощью облачных сервисов работает на localhost, но не тогда, когда приложение rails развернуто на heroku.(то есть «Извините, но что-то пошло не так»)

Код: uploaded_file = params [: log] [: picture] .path cloudinary_file = Cloudinary :: Uploader.upload (uploaded_file,: folder => "journal-on-rails ").

Я определил, что при распечатке загруженного_файла" / var / folder / 2f / ... "отображается локально, но" /tmp/RackMultipart20190606-4-1i7nfxh.jpg"in heroku.

в файле logs_controller.rb:

def update
    @log = Log.find(params[:id])

    if params[:log][:picture]
      p "begin cloudinary upload if there is image: "
      uploaded_file = params[:log][:picture].path
      p "printing uploaded_file path below: "
      p uploaded_file
      cloudinary_file = Cloudinary::Uploader.upload(uploaded_file, :folder => "journal-on-rails")

      p "printing cloudinary_file below: "
      p cloudinary_file

      p "printing cloudinary_file url below: "
      p cloudinary_file["url"]


      @log.attributes = {:image => cloudinary_file["public_id"]}
    else
      log_params[:image] = @log.image
    end

    respond_to do |format|
      if @log.update(log_params)
        format.html { redirect_to @log, notice: "Entry updated!" }
        p "Log updated!"
      else
        format.html { render action: 'logs/edit' }
      end
    end
  end

В файле edit.html.erb:

<<%= form_with scope: :log, model: @log, local: true do |form| %>
  <p>
    <%= form.label :title, 'Entry Title' %><br>
    <%= form.text_field :title, class: "title-text-field" %><br>
        <%= form.label :content, "Content - Great! Felt better?" %><br>
        <%= form.text_area :content, class: "log-text-area"%><br>
        <%= form.label :picture %><br>
        <%= cl_image_tag(@log.image, :width => 350, :fetch_format=>:auto, :crop=>"scale") %><br>
    <%= form.file_field :picture %><br>
  </p>
  <p>
    <%= form.submit %>
  </p>
<% end %>

<%= link_to 'Back', log_path, class: 'btn btn-primary' %>

Мой сайт-герой Журнал в веб-приложении Rails:https://agenda -journal-on-rails.herokuapp.com /

В localhost я могу создать заголовок, тело, а также загрузить изображение через Cloudinary. Корневой маршрут показываетсписок записей / журналов журнала с миниатюрой загруженного изображения. Но в heroku при развертывании в производстве ни одна из облачных функций не способна работать. В результате нет миниатюры.

Я пришел к выводу, что вспомогательный метод cl_image_tag () из Cloudinary работает, потому что я могу получить его в fetch другой public_id в моем облачном аккаунте.Но в Heroku, когда делаю POST метод для редактирования.Я получаю эту ошибку внутри 'heroku logs --tail':

2019-06-06T05: 18: 07.303488 + 00: 00 heroku [router]: at = информационный метод = путь POST = "/ logs / 3"host =nda-journal-on-rails.herokuapp.com request_id = f7c5bdff-79e2-4f28-b500-f5ffecdc4246 fwd =" 129.126.207.229 "dyno = web.1 connect = 0ms service = состояние 819ms = 500 байтов = протокол 1827= HTTPS

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