Загрузка изображений с помощью облачных сервисов работает на 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