質問するログイン新規登録

Q&A

1回答

4166閲覧

ActionDispatch::Http::UploadedFile から画像を表示するHTMLを生成したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/04/17 10:21

編集2019/04/18 03:45

0

0

ファイルアップロードを含む投稿に失敗した場合に
画像を再セットしなくてすむUIを作りたいです

file_field から送ったパラメーターは ActionDispatch::Http::UploadedFile
というクラス名でフォームにやってくるんですが
このモデルから(サーバー側で一切保存せずに)再度画像のプレビューを表示する方法はないでしょうか

https://teratail.com/questions/183092
ここで file_field に値を再セットするのはセキュリティの都合で無理だと教えていただいたんですが
https://teratail.com/questions/183429
こちらの質問でローカルファイルではなく Blob や File オブジェクトをもっていれば
file_field に再セットする(表示は変えられないけど submit するとデータは送られる)ということは確認しました

なのでプレビューを image_tag で再表示して選択している状態にみせかけて
file_field にその画像のデータをセットすればデフォルトで選択しているようにみせつつそのデータも再送信できると考えます

データ自体は送られてきているので
javascript で Blob オブジェクト?を生成してそのURLをimage_tag にうめこむような
Javascript 自体を生成してうめこめばできるような気がするんですが

ActionDispatch::Http::UploadedFile 型からどうやって画像データを取り出すか
そのバイナリ文字列から Blob を作成するような Javascript をどうかけばいいかがわかりません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。

回答1

0

他の質問から CarrierWave を使っていることがわかりました。その CarrierWave にはファイルアップロードを含む投稿に失敗した場合に画像を再セットしなくてすむ仕組みがあるので、こちらのドキュメントを参照してみてください。

https://github.com/carrierwaveuploader/carrierwave#making-uploads-work-across-form-redisplays

投稿2019/04/19 07:55

退会済みユーザー

退会済みユーザー

総合スコア0

退会済みユーザー

退会済みユーザー

2019/04/19 13:58

>他の質問から CarrierWave を使っている 非常にややこしいのですがサブモデルでcarrierwaveを使っているせいで 画像の保存にいくまでに他のカラムでエラーになった場合に ImageUploader にならずに ActionDispatch のまま form に戻ってきてしまうのです…
guest

この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問