5

Carrierwave で redactor_rails gem を使用しています。画像をアップロードできるテキスト エディターが必要な場所が 2 か所あり、エディターごとに異なる画像サイズを作成したいと考えています。

バージョンを使用すると、すべての画像に 2 つのサイズがあり、テキスト フィールドで画像のバージョンを変更する方法がわかりません。

主なアイデアは、redactor_rail_picture_uploader のすべてのエディター アップローダーに対して独自のサイズ変更プロセスを実行することです。

それ、どうやったら出来るの?

4

1 に答える 1

2

完璧な方法ではないかもしれませんが、うまくいきます。

アップロードされたファイルのいくつかのバージョンをredactor_rails_picture_uploader.rbに作成しました。

version :item_text do
  process :resize_to_limit => [478, 478]
end

version :thumb do
  process :resize_to_fill => [100, 100]
end

クラスRedactorRails::PicturesControllerの初期化子を作成し、メソッド 'create' を再定義しました。これで、フォームで渡したバージョンが「バージョン」パラメーターで保存されます。

RedactorRails::PicturesController.class_eval do
  def create
    @picture = RedactorRails::Picture.new

    file = params[:file]
    version = params[:version]

    @picture.data = RedactorRails::Http.normalize_param(file, request)
    if @picture.respond_to?(:user_id)
      @picture.user = current_user
      @picture.assetable = current_user
    end

    if @picture.save
      if version 
        file_link = @picture.send(:url, version)
      else 
        file_link = @picture.url
      end 

      render :text => { :filelink => file_link }.to_json 

    else
      render :nothing => true
    end
  end
end

最後に、このフォームに保存したいアップローダーからのバージョンの値を含む非表示の入力を追加しました。

%input{:id => 'redactor_version', :value => 'item_text', :type => 'hidden'}

このようなもの。

于 2013-03-28T20:40:51.523 に答える