0

Web サイトのユーザーが最大 3 つの画像をアップロードできるようにしています。したがって、私のフォームには次の要素があります。

<label>Additional Images*<span class="note">(Maximum: 3, 200 pixels wide)</span></label>
<%= f.file_field :images, { :multiple => "", :accept => "image/*" } %>
<div id="images"></div>

選択された画像が 3 つ以下であることを検証する JavaScript がいくつかあります。また、画像のサムネイルを作成し、子として div#images に追加します。ユーザーがフォームを送信すると、次のような画像情報の配列が :images パラメータに取り込まれます。

[ #<ActionDispatch::Http::UploadedFile:0x00000007269588
   @original_filename="test_banner.jpeg",
   @content_type="image/jpeg",
   @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_banner.jpeg\"\r\nContent-Type: image/jpeg\r\n",
   @tempfile=#<File:/tmp/RackMultipart20120726-7134-3hqdve>>,
  #<ActionDispatch::Http::UploadedFile:0x00000007269510
   @original_filename="test_portrait.jpeg",
   @content_type="image/jpeg",
   @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_portrait.jpeg\"\r\nContent-Type: image/jpeg\r\n",
   @tempfile=#<File:/tmp/RackMultipart20120726-7134-18fcs0m>>,
  #<ActionDispatch::Http::UploadedFile:0x00000007269498
   @original_filename="test_signiture.jpeg",
   @content_type="image/jpeg",
   @headers="Content-Disposition: form-data; name=\"custom_form[images][]\"; filename=\"test_signiture.jpeg\"\r\nContent-Type: image/jpeg\r\n",
   @tempfile=#<File:/tmp/RackMultipart20120726-7134-1q5fy2f>> ]

私のモデルには、3 つの属性があります。

has_attached_file :image1,
  ...

has_attached_file :image2,
  ...

has_attached_file :image3,
  ...

フォームで送信される画像パラメーターからの情報が分割され、モデルのそれぞれの画像属性に送信されるように取得しようとしています。ユーザーが1つまたは2つの画像のみをアップロードした場合、他の属性はゼロです。ペーパークリップを使用してレールでこれを機能させる方法はありますか?

4

1 に答える 1

0

3xfile_fieldsを作成することを強くお勧めします。次に、すべてが整列し、検証がすべて正常に機能します。それほど滑らかではないことはわかっていますが、1〜3枚の画像の場合は...それほど大したことではありません。

于 2012-07-26T20:29:43.900 に答える