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] を手動で挿入しようとしました。