1

Rails 4 を NicEdit html エディターで構成しようとしています。そこで、nicEdit-latest.js をダウンロードし、Rails アプリケーションで正しくセットアップしました。画像を自分のサーバーにアップロードすることを除いて、すべて正常に動作します。

nicEdit-latest.js のアップロード URL を次のように変更しました。

 {nicURI:"http://myserver.com:3000/upload/get_image",...}

次に、get image_action でアップロード コントローラーを作成しました。

class UploadController < ApplicationController 
protect_from_forgery with: :null_session #without it controller rises an error

  def get_image
   picture = Picture.new
   picture.image = params[:image]
   picture.save
   render :text => picture.image.url #?
  end

end

Carrierwave gem を構成し、画像を保存するためのモデルを作成しました。

class Picture < ActiveRecord::Base
  mount_uploader :image,PictureUploader
end

pry gemを使ってコンソールで遊んでみたところ、アップロードした画像を次のようなコードで保存することに成功しました

picture.image = params[:image]

しかし、それでも「画像のアップロードに失敗しました」というメッセージを受け取りました。クライアント側のjsが何らかの応答を待っていることを理解しています。しかし、私はそれがどうあるべきか理解できません。私を助けてください。

4

1 に答える 1

2

画像をアップロードしたら、次のように応答します。

render json: { upload: { links: { original: @image.image_url } } }

理由を理解するには、NicEdit のダウンロード ページで圧縮されていないバージョンをダウンロードし、次の行を確認してください。

1419..1425 - アップロードが終了し、JSON 応答を受信すると、' upload ' キーを取得し、onUploaded 関数を呼び出します。

xhr.onload = function() {
      try {
        var res = JSON.parse(xhr.responseText);
      } catch(e) {
        return this.onError();
      }
      this.onUploaded(res.upload);
....

1443..1445 - onUploaded 関数で、キー内部オブジェクト キー ' links '、属性 ' original 'に移動します

  onUploaded : function(options) {
    this.removePane();
    var src = options.links.original;
    if(!this.im) {
      this.ne.selectedInstance.restoreRng();
      var tmp = 'javascript:nicImTemp();';
      this.ne.nicCommand("insertImage", src);
      this.im = this.findElm('IMG','src', src);
   }
...

ps。バージョン 0.9 r24 を参照します

于 2013-09-09T03:50:48.143 に答える