質問: ファイルアップロードを含む投稿に失敗した場合に 画像を再セットしなくてすむUIを作りたいです file_field から送ったパラメーターは ActionDispatch::Http::UploadedFile というクラス名でフォームにやってくるんですが このモデルから(サーバー側で一切保存せずに)再度画像のプレビューを表示する方法はないでしょうか ここで file_field に値を再セットするのはセキュリティの都合で無理だと教えていただいたんですが こちらの質問でローカルファイルではなく Blob や File オブジェクトをもっていれば file_field に再セットする(表示は変えられないけど submit するとデータは送られる)ということは確認しました なのでプレビューを image_tag で再表示して選択している状態にみせかけて file_field にその画像のデータをセットすればデフォルトで選択しているようにみせつつそのデータも再送信できると考えます データ自体は送られてきているので javascript で Blob オブジェクト?を生成してそのURLをimage_tag にうめこむような Javascript 自体を生成してうめこめばできるような気がするんですが ActionDispatch::Http::UploadedFile 型からどうやって画像データを取り出すか そのバイナリ文字列から Blob を作成するような Javascript をどうかけばいいかがわかりません
回答: 他の質問から CarrierWave を使っていることがわかりました。その CarrierWave にはファイルアップロードを含む投稿に失敗した場合に画像を再セットしなくてすむ仕組みがあるので、こちらのドキュメントを参照してみてください。 https://github.com/carrierwaveuploader/carrierwave#making-uploads-work-across-form-redisplays