前提
現在、Rails Carrierwave Cloudinary Medium-editorを使用し、
ユーザーがある程度レイアウトを操作できるようなブログサイトのような物を作成しています。
Medium-editorで画像を扱うことは実装済みでCloudinaryとの連携もできております。
Medium-editorで作られたフォームに画像をいれるとプレビューもできています。
###実現したいこと
Medium-editorで作られたフォーム中に画像をいれると
Cloudinaryに保存されている画像のhttpsのリンクで引っ張って来たい。
※現在はhttpのリンクを引っ張って来ている。
関わりのありそうなコード
ImagesController.rb
def upload files = params.require(:files) @image = Image.new @image.file = files[0] respond_to do |format| if @image.save format.html { redirect_to @image, notice: 'Image was successfully created.' } format.json do render json: { files: [ { url: @image.file.metadata['url']+"?id=#{@image.file.model.id}", thumbnail_url: @image.file.metadata['url']+"?id=#{@image.file.model.id}", size: 0, delete_url: "/images/delete", delete_type: "DELETE" } ] } end else format.html { render :new } format.json { render json: @image.errors, status: :unprocessable_entity } end end end def destroy file = params.require(:file) split_file = file.split('/') tmp = split_file[-1].split('.') filename = tmp[0] url = URI.parse(file) url = Rack::Utils.parse_nested_query(url.query) id = url['id'] Cloudinary::Api.delete_resources(filename) Image.destroy(id) respond_to do |format| format.json { head :no_content } end end
image_uploader.rb
include Cloudinary::CarrierWave
cloudinary.yml
production: cloud_name: <%= ENV['CLOUDINARY_CLOUD_NAME'] %> api_key: <%= ENV['CLOUDINARY_API_KEY'] %> api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %> enhance_image_tag: true static_file_support: true secure: true #https化のために追加 cdn_subdomain: true
cloudinary.rb
if Rails.env.production? Cloudinary.config do |config| config.secure = true #https化のために追加 end end
views/posts/_form.html.erb
<%= f.text_area :text, placeholder: "本文", class: 'editable' %> ・・・ ・・・ ・・・ <script> var editor = new MediumEditor('.editable', { placeholder: { text: 'ここに本文を入力してください', hideOnClick: true } }); </script> <script> $('.editable').mediumInsert({ editor: editor, addons: { images: { fileUploadOptions: { url: '/images/upload', type: 'post', acceptFileTypes: /(.|/)(gif|jpe?g|png)$/i }, fileDeleteOptions: { url: '/images/delete', }, } } }); </script>
試したこと
色々調べ、上記のコードの状態になりました
ちなみに、UserはDeviseで作成しており、Carrierwave + Cloudinaryで管理しております。
そちらのUserのアバター用に作成したuploaderの方はhttps化は上記のコードで動いています。
なので、medium-editor、jquery-fileuploaderの
補足情報(FW/ツールのバージョンなど)
rails 5.1.7
ruby 2.5.8
あなたの回答
tips
プレビュー