画像をtype="file"で投稿
↓
その投稿されたものをindex.htmlで表示させたいのですが、うまくいきません。
コントローラー
※@postに毎回、画像を入れてるから、上書きされてる形になってるのではないかと思います
def new @post = Post.new end def create @post = Post.new( image_name: params[:image], ) @post = Post.new(image_name: params[:image]) if params[:image] @post.image_name = "#{@post.id}.jpg" image = params[:image] File.binwrite("public/user_images/#{@post.image_name}", image.read) end end
new.index.html
<%= form_tag("/posts/#{@post.id}/create", {multipart: true}) do %> <input name="image" type="file"> <% end %>
new.index.html
<%= form_tag("/posts/#{@post.id}/create", {multipart: true}) do %> <input name="image" type="file"> <% end %>
上記コードでは
・newコントローラーで空のインスタンスを作る。
・new.index.html(name="image")で読み込んだ画像が、params[:image]にはいっている
あとはそれを書き込む処理
だと思うのですが、どうもうまくいきません。
うまくいかないとは、画像自体は表示できるのですが
その画像が別の画像になっていたりします。
例えば
A画像があるとします
↓
B画像の読み無処理をすると
↓
表示されるのはB画像ではなくA画像になってる。(上書きのイメージ)
です。
たぶん、うまく、params[:image]にはいっていないのかな?と思います。。
すごくあいまいなままに覚えてます。
恐れ入りますが、お助けください。よろしくお願いします。
表示させるindex.html.erbは
<% @posts.each do |post| %> <tr> <td class="td-img"> <%= link_to "/posts/#{post.id}" do %> <img src="<%= "/user_images/#{post.image_name}" %>"> <% end %> </td> </tr> <% end %>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。