ruby on rails にて簡易的なツイートアプリ作成中です。
画像付きの投稿ができる機能を作りたいのですが、DBへの画像名の保存及びpublicディレクトリ内への画像データの保存がうまくいきません。
具体的にやりたいことは
・画像ファイル名はテーブルのimageカラムへ保存(テーブルにimageカラムはstring型で作成済み)
・画像データは/public/tweet_imageへ保存
の2点です。
下記がコードになります。
ruby
1class TweetsController < ApplicationController 2 3 def index 4 @tweets = Tweet.includes(:user).order("id DESC") 5 end 6 7 def new 8 end 9 10 def create 11 Tweet.create( 12 title: tweet_params[:title], 13 text: tweet_params[:text], 14 user_id: 1) 15 if tweet_params[:image] 16 Tweet.create(image: tweet_params[:image]) 17 image = tweet_params[:image] 18 File.binwrite("public/tweet_images/#{image}", image.read) 19 end 20 end 21 22 private 23 def tweet_params 24 params.permit(:title, :image, :text) 25 end 26end
ruby
1<div class="contents row"> 2 <div class="container"> 3 <%= form_tag('/tweets', {multipart: true}) do %> 4 <h3> 5 POST 6 </h3> 7 <input name="title" placeholder="title"> 8 <input name="image" type="file" placeholder="image"> 9 <textarea name="text" placeholder="text" rows="10" cols="30"></textarea> 10 <input type="submit" value="SEND"> 11 <% end %> 12 </div> 13</div>
上記のコードで投稿画面からデータを入力し送信すると下記のエラーが表示されます。
おそらくparams[:image]に画像データが含まれていないのではないかと考えておりますが、現時点で解決方法が見つかっておりません。どなたかご教示いただけますと幸いです。