新規投稿画面から画像をアップロードして表示させるところでつまづいております。
#######{@post.id}.jpgの形でpublic/post_imagesに保存して表示させたいのですが、@post.idが表示されないままです。
新規投稿でまだpost.idを保有していないためだと思うのですが実装の仕方がよくわかりません。
どうかご教授いただけないでしょうか。
home_controller.rb
def create @post = Post.find_by(id: params[:id]) @post = Post.new(content: params[:content], user_id: current_user.id, fc_name: params[:fc_name], post_image: "default_post.jpg") # ここから画像保存処理してる if params[:post_image] @post.post_image = "#{@post.id}.jpg" image = params[:post_image] File.binwrite("public/post_images/#{@post.post_image}",image.read ) end if @post.save redirect_to(root_path) flash[:notice] = "ファンクラブを作成しました!これから素晴らしいファンクラブにしていってくださいね♡" else render("new_fc") end end
new_fc.html.erb
<h3>ファンクラブ名を入力してね!<h3> <%= form_tag("/home/create", {multipart: true}) do %> <ul> <p>ファンクラブ名</p> <li><textarea class="textbox" name="fc_name" type="text" placeholder="ファンクラブ名を入力してね♡"></textarea></li> <p>ファンクラブについて</p> <li><textarea class="textbox" name="content" type="text" placeholder="ファンクラブについて詳しく書いてね♡"></textarea></li> <p>ファンクラブのヘッダー画像</p> <input name="post_image" type="file"> <input type="submit" value="これで完成!" class="btn btn-light-green btn-size-large"></input> </ul> <% end %>
routes.rb
Rails.application.routes.draw do get "home/test" => "home#barbajs" get ":id/edit_profile" => "home#edit_profile" get "account/:id/edit" => "home#edit_account" post "user/:id/update" => "home#update_user" get 'pay/payment' devise_for :users get "home/:id/likes" => "home#likes" post "likes/:post_id/create" => "likes#create" post "likes/:post_id/destroy" => "likes#destroy" root 'home#index' get "home/new_fc" => "home#new_fc" post "home/create" => "home#create" get "home/profile/:id" => "home#profile" get ":id/show_fc" => "home#show_fc" get ":id/edit_fc" => "home#edit_fc" post ":id/update_fc" => "home#update_fc" post ":id/fc/destroy" => "home#destroy" get ":id/setting" => "home#setting" get "pay" => "pay#payment" get "home/new_fc_content" => "home#new_fc_content" post "home/content_create" => "home#content_create" end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/30 09:04
2018/08/30 09:05