2017-05-02 25 views
0

CKEDITORが私の画像を表示していない理由を知ることができません...私はS3へのアップローダーとしてCarrierwaveを使用しています.S3には、明らかにすべてが独自のアップローダ.rb 'Carrierwave経由で直接アップロードした場合、S3から表示された画像を取得しても問題はありません。しかし、もし私がCKEDITORを通して上記の画像をアップロードしたり、CKEDITORの中にそれを添付すれば、それはそのソースリンクのみを表示します。これは、プロダクションとdevの両方のローカルホストで発生します。CKEDITOR + CARRIERWAVE + S3画像なし

アップローダ/ 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 

アップローダ/ 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 

モデル/ picture.rb

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

    def url_content 
    url(:content) 
    end 
end 

モデル/ 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

私は謎を解いた、私の見解ではhtml_safeが必要でした。

<%= @ blogpost.content.html_safe%>

私はそれを生産に入れて、HTMLマークアップも表示していることを明らかにしました –

答えて

0

私は自分自身の質問に答えていますが、うまくいけば、これはあなたを助けるでしょう。あなたがこれを読んでいるなら、明らかにS3のようなあなたのストレージが正しく設定されているはずです(私の場合)。 ckeditor exを使用してコンテンツを表示しようとすると、html_safeメソッドが必要です。

<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> 

これが他の人に役立つことを望みます。 CKeditorは設定ガイドでこれについて言及していません。もし自分自身のような初心者なら、このような微妙なことを理解できないかもしれません。

関連する問題