2016-02-23 4 views
-1

Я новичок, и я не могу решить эту проблему.RoR: Загрузите редактор Froala WYSIWYG и Carrierwave - сохраните загруженное изображение без модели вложения

Что я сделал: Setting up Froala WYSIWYG editor with CarrierWave and Rails

Gist: https://gist.github.com/qqnc/c4417aefe120374c8271

Проблема: см: фото

#<TextPost:0x0000000591aaa0> { 
       :id => 48, 
      :title => "Alba", 
       :body => "<p><img class=\"fr-dib\" src=\"/uploads/attachment/picture/6/A_2.png\" style=\"width: 300px;\" data-status=\"OK\"></p>", 
       :url => nil, 
       :type => "TextPost", 
      :user_id => 1, 
     :created_at => Tue, 23 Feb 2016 20:41:08 UTC +00:00, 
     :updated_at => Tue, 23 Feb 2016 20:41:08 UTC +00:00, 
    :comments_count => 0, 
      :picture => #<PictureUploader:0x000000058db0f8 @model=#<TextPost id: 48, title: "Alba", body: "<p><img class=\"fr-dib\" src=\"/uploads/attachment/pi...", url: nil, type: "TextPost", user_id: 1, created_at: "2016-02-23 20:41:08", updated_at: "2016-02-23 20:41:08", comments_count: 0, picture: nil>, @mounted_as=:picture> 
} 

Вопрос: Как я могу сохранить загруженную картинку без модель привязки? (В TextPost: картины)

text_post_controller.rb

class TextPostsController < ApplicationController 
    before_action :logged_in_user, only: [:create, :destroy] 
    before_action :admin_user, only: :destroy 

    def new 
    @text_post = TextPost.new 
    end 

    def create 
    @text_post = current_user.text_posts.build(text_post_params) 
    if @text_post.save 
     redirect_to post_path(@text_post), 
        notice: "Post created!" 
    else 
     render :new, alert: "Error creating post." 
    end 
    end 

    def edit 
    @text_post = current_user.text_posts.find(params[:id]) 
    end 

    def update 
    @text_post = current_user.text_posts.find(params[:id]) 

    if @text_post.update(text_post_params) 
     redirect_to post_path(@text_post), 
        notice: "Post updated!" 
    else 
     render :edit, alert: "Error updating post." 
    end 
    end 

    def destroy 
    @text_post = TextPost.find(params[:id]) 

    if @text_post.destroy 
     flash[:success] = "Post deleted." 
     redirect_to request.referrer || root_url 
    else 
     flash[:alert] = "Error deleting post." 
     redirect_to post_path(@text_post) 
    end 
    end 

    private 
    def text_post_params 
     params.require(:text_post).permit(:title, :body, :picture) 
    end 

    # Before filters 

    # Confirms an admin user. 
    def admin_user 
     redirect_to(root_url) unless current_user.admin? 
    end 
end 

attachments_controller.rb

class AttachmentsController < ApplicationController 

    def upload 
    @attachment = Attachment.new 
    @attachment.picture = params[:file] 
    @attachment.save 

    respond_to do |format| 
     format.json { render :json => { status: 'OK', 
             link: @attachment.picture.url} 
     } 
    end 
    end 
end 
+0

ли вы ее решили? –

ответ

1

Самый простой способ использовать визуальный редактор в рельсах, а также хотят, чтобы загружать изображения на локальном сервере или на Amazon S3 или Google Cloud Storage - это использование CKEditor.

Документация по Ruby Gem для CKEditor доступна по адресу: https://github.com/galetahub/ckeditor.

Подробная установка и использование руководства доступно по адресу: http://sulmanbaig.com/blog/wysiwyg-editor-for-ruby-on-rails

Для carrierwave забудьте позвонить rails generate ckeditor:install --orm=active_record --backend=carrierwave после расслоения установки драгоценного камня.

0

В этом случае вы можете просто игнорировать файл attachment_controller.rb. Я создал это, потому что это был контроллер, который я использовал для обработки вызова ajax (вложения/upload.json).

Однако убедитесь, что у вас есть mount_uploader в вашей модели TextPost, а также создан PictureUploader. [check here in getting started]. Таким образом, при сохранении TextPost изображение должно быть сохранено.

например:

class TextPost < ActiveRecord::Base 
    mount_uploader :picture, PictureUploader 
end