質問: 画像(のURL)をカラムにもつユーザー登録画面を Rails で作っていて 画像をアップロードする方法で検索すると carrierwave というのがたくさんひっかかりますが イマイチ使い方がわかりません やりたいことは新規作成(編集) _form.html.erb で ユーザ登録フォーム内に画像アップロードボタン upload と ユーザ登録フォームの外側に非表示にしたアップロードフォーム (form_tag と file_field) を設置して ボタンが押されたら file_field のクリックを呼んでファイル選択画面を出して ファイルが選択されたら onchange イベントで ajax で画像を送信 コントローラーで S3 へ保存してその URL を返却 ajax が成功して URL を受け取ったら img タグを生成して画像を表示して hidden_field に URL をうめこみ メインフォームの submit を押すとその URL がカラムに保存される という流れにしたいのですが carrierwave の gem をインストールして user.rb に mount_uploader :image, ImageUploader とかいても何もおきません activerecord と連動したユーザデータ全体の送信時でないと 画像だけを先に S3 にアップロードという用途では使えないのでしょうか?
回答: 画像を表示するにはどこかのサーバーに保存して URLを取得しなければ img タグは使えないと思いこんでいたのですが 画像をサーバーに送らなくても file_field に登録した時点で画像をプレビューすることはできるみたいなので 実際にS3に送信するのは全体送信時にするようにして carrirwave をモデルのセーブ時にアップロードを行う普通の使い方にして解決できました ただデータベースに保存せずにS3へのアップロードだけを行う方法は依然不明なので carrirwave ではそういう使い方はできないのか教えていただけるとありがたいです 参考: フォームからファイルを選択した際に、submitする前にプレビュー表示する方法(jQuery版) https://qiita.com/kon_yu/items/f98df7ac826e7c36cc6c