前提・実現したいこと
Webサービスにおいて、ユーザーが投稿した画像名をDBに保存したいです。
(ファイル名でなくても投稿した画像とユーザーがひもづけば良いです)
WebサービスはECのようなもので、ユーザーに画像と購入者情報を入力してもらいます。
画面の遷移は
1.画像の選択
2.購入者情報の入力
3.画像・入力情報の確認
4.注文完了(3→4のタイミングでDBに保存)
となっています。
またcarrierwaveをインストールしています。
→おそらくこれが原因では?と思っているのですが、理解が浅く、ご教授いただけると幸いです。
発生している問題・エラーメッセージ
1.ユーザーが画像を投稿する(input type="file" name="image")
2.投稿した画像名(画像のパス?)をsession[:image]で保持
3.<%= image_tag(session[:image]) %>で画像を表示
3→4.@order.image = session[:image]として@order.saveで保存
としています。
このときimage以外の入力内容は正しくDBに保存されているのですが、imageだけnilになってしまいます。なおこのときsession[:image]には値が入っています。
試したこと
binding.pryを用いてsession[:image]や@order.imageにどういう値が入っているかを確認しました。
確認したところsession[:image]には画像名(パス)が入っていましたが、@order.imageは以下のようになっていました。
pry(#OrderController)> @order.image => #<ImageUploader:0x0000000c492648 @cache_id=nil, @file=nil, @filename=nil, @model= #<Order:0x0000000c5c0790 id: nil, name1: "", string: nil, name2: "", tel1: "", tel2: "", tel3: "", image: nil, text: nil, email: "", zipcode: "", pref: "北海道", addr1: "", addr2: "", delivery_date: "", date: nil, pay_type: "credit_card", pay_code: nil, created_at: nil, updated_at: nil>, @mounted_as=:image, @versions=nil>
情報が足りていないなどあれば言ってください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。