質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

1回答

222閲覧

画像をpublic/post_imagesに保存して表示したい

akiakiakirin

総合スコア13

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2018/08/29 19:27

新規投稿画面から画像をアップロードして表示させるところでつまづいております。

#######{@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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

新規投稿でまだpost.idを保有していないためだと思う

のであれば、@post.saveした後に、画像を保存すればいいのではないでしょうか?

投稿2018/08/30 01:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akiakiakirin

2018/08/30 09:04

ご回答ありがとうございます!画像表示されました!
akiakiakirin

2018/08/30 09:05

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]) if @post.save # ここから画像保存処理してる 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 redirect_to(root_path) flash[:notice] = "ファンクラブを作成しました!これから素晴らしいファンクラブにしていってくださいね♡" else render("new_fc") end end
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問