1

Carrierwave 組み込みの複数ファイル アップローダーを使用するアプリがあります。Jasny の Bootstrap File Input プラグインを使用して、基本的な画像のプレビューと管理 (選択した画像を削除できる必要があるだけ) を実装しようとしていますが、うまくいきません。

1 つの画像では機能しますが、複数では機能しません。

私のモデル:

class Ad < ActiveRecord::Base
  mount_uploaders :images, AdImagesUploader

class AdImagesUploader < CarrierWave::Uploader::Base

私のフォーム:

= simple_form_for @ad do |f|
  - 5.times do |i|
    .fileinput.fileinput-new{"data-provides" => "fileinput"}
      .fileinput-preview.thumbnail{"data-trigger" => "fileinput", :style => "width: 200px; height: 150px;"}
      %div
        %span.btn.btn-default.btn-file
          %span.fileinput-new Selecione o Arquivo
          %span.fileinput-exists Change
          = f.file_field :images["#{i}"], multiple: true, limit: 4
          = f.hidden_field :images_cache
        %a.btn.btn-default.fileinput-exists{"data-dismiss" => "fileinput", :href => "#"} Remove

次のいずれかを行います。

a. ユーザーが各画像を選択してプレビューを表示し、Jasny のプラグイン コントロールを使用して削除できるように、5 つの入力を表示します。

また

b. ユーザーが複数選択してアップロードしようとするファイルごとに 5 つのプレビューを生成する 1 つのボタンを表示します。

「a」の問題は、5 つの f.input :images を作成する必要があり、フォームが送信されたときに機能しないことです。

「b」の問題は、最初の画像のプレビューのみが表示され、コントロールが最初の画像でのみ機能することです。

現在、Carrierwave の実装を変更することはできないため、その構成で作業する必要があります。通常の CarrierWave アップロードを使用するために、新しいモデルの AdImages を実装できません。

何か案は?CarrierWave の組み込みの複数アップロード機能を使用してプレビューを表示する他のプラグインまたは他の方法の提案を受け入れます。

編集: 知らない人のために説明すると、CarrierWave はデータベースに JSON 列を作成して、画像ファイルパスを保存します。そのため、フォームに :image[1] を手動で挿入しようとしました。

4

0 に答える 0