2017-05-02 3 views
0

Ich kann nicht herausfinden, warum der HACK CKEDITOR meine Bilder nicht anzeigt ... Ich benutze Carrierwave als meinen Uploader zu S3, die offensichtlich alle auf ihren eigenen 'Uploader gesetzt haben .rb 'Wenn ich direkt über Carrierwave hochlade, habe ich keine Probleme, das Bild von S3 zur Anzeige zurückzuholen. ABER wenn ich dieses Bild über CKEDITOR hochlade oder es in CKEDITOR anhefte, wird nur der Quelllink angezeigt. Dies geschieht sowohl in der Produktion als auch im dev localhost.CKEDITOR + CARRIERWAVE + S3 kein Bild

uploaders/ckeditor_attachement_file_uploader.rb

# encoding: utf-8 
require 'carrierwave' 

class CkeditorAttachmentFileUploader < CarrierWave::Uploader::Base 
    include Ckeditor::Backend::CarrierWave 

    # Include RMagick or ImageScience support: 
    # include CarrierWave::RMagick 
    # include CarrierWave::MiniMagick 
    # include CarrierWave::ImageScience 

    # Choose what kind of storage to use for this uploader: 
    if Rails.env.production? 
    storage :fog 
    else 
    storage :file 
    end 


    # Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    "uploads/ckeditor/attachments/#{model.id}" 
    end 

    # Provide a default URL as a default if there hasn't been a file uploaded: 
    # def default_url 
    # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    # end 

    # Process files as they are uploaded: 
    # process :scale => [200, 300] 
    # 
    # def scale(width, height) 
    # # do something 
    # end 

    # Add a white list of extensions which are allowed to be uploaded. 
    # For images you might use something like this: 
    def extension_white_list 
    Ckeditor.attachment_file_types 
    end 
end 

uploaders/ckeditor_picture_uploader.rb

# encoding: utf-8 
class CkeditorPictureUploader < CarrierWave::Uploader::Base 
    include Ckeditor::Backend::CarrierWave 

    # Include RMagick or ImageScience support: 
    # include CarrierWave::RMagick 
    include CarrierWave::MiniMagick 
    # include CarrierWave::ImageScience 

    # Choose what kind of storage to use for this uploader: 
    if Rails.env.production? 
    storage :fog 
    else 
    storage :file 
    end 


    # Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    "uploads/ckeditor/pictures/#{model.id}" 
    end 

    # Provide a default URL as a default if there hasn't been a file uploaded: 
    # def default_url 
    # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 
    # end 

    # Process files as they are uploaded: 
    # process scale: [200, 300] 
    # 
    # def scale(width, height) 
    # # do something 
    # end 

    process :extract_dimensions 

    # Create different versions of your uploaded files: 
    version :thumb do 
    process resize_to_fill: [118, 100] 
    end 

    version :content do 
    process resize_to_limit: [800, 800] 
    end 

    # Add a white list of extensions which are allowed to be uploaded. 
    # For images you might use something like this: 
    def extension_white_list 
    Ckeditor.image_file_types 
    end 
end 

models/picture.rb

class Ckeditor::Picture < Ckeditor::Asset 
    mount_uploader :data, CkeditorPictureUploader, mount_on: :data_file_name 

    def url_content 
    url(:content) 
    end 
end 

models/attachement_file.rb

class Ckeditor::AttachmentFile < Ckeditor::Asset 
    mount_uploader :data, CkeditorAttachmentFileUploader, mount_on: :data_file_name 

    def url_thumb 
    @url_thumb ||= Ckeditor::Utils.filethumb(filename) 
    end 
end 
+0

Ich habe das Rätsel gelöst, html_safe wurde meiner Ansicht nach benötigt. zum Beispiel

<% = @ blogpost.content.html_safe%>

Ich habe es nur herausgefunden, als ich es in Produktion genommen habe und gezeigt habe, dass es auch HTML Markup anzeigt –

Antwort

0

Ich weiß, dass ich meine eigene Frage beantworte, aber hoffentlich wird dir das helfen. Wenn Sie dies lesen, dann haben Sie offensichtlich alle Ihre Speicher korrekt eingerichtet, wie S3 (in meinem Fall). Ihre Ansichten müssen die Methode html_safe erfordern, wenn Sie versuchen, Ihre Inhalte über ckeditor ex anzuzeigen.

<div class="col-xs-12"> 
<h1>Webur Blog</h1> 

    <h2><%= @blogpost.title %></h2> 
    <span><p><%= image_tag @blogpost.picture.url if @blogpost.picture? %></p></span> 
    <p><%= @blogpost.content.html_safe %></p> 
    <% if is_an_admin %> 
    <%= link_to "Return to blog", blogposts_path, class: 'btn btn-primary' %> 
    <%= link_to "Edit Post", edit_blogpost_path, class: 'btn btn-primary' %> | 
    <%= link_to "Delete Post", blogpost_path(@blogpost), 
          method: :delete, data: {confirm: "Are you sure?"}, class: 'btn btn-danger' %> 

    <% else %> 
    <%= link_to "Return to blog", blogposts_path, class: 'btn btn primary' %> 
    <% end %> 
</div> 

Hoffentlich hilft dies anderen. CKeditor erwähnt das nicht in ihrem Setup Guide, und wenn Sie ein Anfänger wie ich sind, können Sie keine Feinheiten wie diese fangen

Verwandte Themen