Rails【Rails#5】画像アップロードについて調べたコジマです。※この記事は色々調べながら書いてるので、誤りあるかもしれません。ご指摘頂くか自分で誤りに気付いたときに修正します。こんな感じで画像アップロード機能を追加したんですよ。(ユーザー編集画面はしれっと見た目を整えました)アップロード手順を掲載しようかと思ったんですけど、Progateの真似事をして作って、重要なポイントがまだ押さえきれてないので重要なところを真似していくという形をとりたいと思います。具体的な手順が知りたい人はProgateに課金してRails5のVIIで受講できるので、是非行なってください。プログラマーになりたいと思った人がやるべき7つのことaxiaのブログで推奨されているうちの1機能について完了です。大きく分けると画像をアップロードするフォームを作る画像のファイル名をDBに保持する画像を保存する画像を表示すると分けられます。画像を表示する画像をアップロードするフォームを作るform_tagにmultipartというオプションを指定します。method="post">という情報がセットされます。enctype=”multipart/form-data”という部分が付加されます。画像を扱う時のおまじないではなくて複数のファイルタイプを扱うときに使うようですね。この場合だとテキスト(type=”text”)と画像(type=”file”)ですかね。他のpasswordとかtextboxとかはtext情報として扱えるものなのでmultipartとしなくても良いのかと思います。(詳しい人いたら教えてください。)画像のファイル名をDBに保持するDBにはファイル名を文字型でセットするだけなので、特に問題はないんじゃないかと思います。画像を保存するFile.binwriteというメソッドを使用します。rubydocによるとIOクラスのbinwriteメソッドらしいですね。rubyの組み込みライブラリで基本的な入出力管理を司るものがIOクラス、その中でファイルアクセスを行うクラスがFileクラスとのこと。FileクラスはIOクラスを継承しているのでFile.binwriteという使い方ができるようです。binwriteメソッドはwriteメソッドをバイナリ対応させたメソッドです。binwrite(書き込むパス,読み込む文字列)という使い方をします。アップロードのフォームからmultipartのtype=”file”からファイル情報をもらっているので、binwriteすることでファイル情報(今回は画像)を保存できる。いう仕組みになっているようです。%>こんな書き方になりますね。パスの最初に/をつけるとpublic/を付けないとapp/assets/imagesを読みにいくとのこと。app/assets/imagesの下に保存したデータにはフィンガープリントというMD5ハッシュ値がファイル名に付加されるためにこういう可変のデータを扱うときは面倒らしいですよ。アセットパイプラインというフレームワークが実装されていて、フィンガープリントを連結してブラウザ場で1つのファイルとしてキャッシュするから読み込み速度を高めることができるらしいです。調べながら書いてみました。エンジニアとしてただ使えるようになるだけでなくて、仕組みをきちんと知ることは大事だと思ってます。フレームワークを勉強しているなら尚更。Railsを使用した仕事がいつかできるようになるといいなと思いますね。勉強会とかも参加しようと思っているので、そのときはまたレポしますね。2018.05.02コジマです。それが実際何やってるのかあまり考えなくてもよくなったりしますよね。アクセスし、デバッグ情報が表示されていることを確認してくだ[...]【落とし穴】権限って大事だよね...。2018.05.15コジマです。Railsチュートリアルやっていて、3章のminitestとguradを実行しようとしたんですよ。コメントをキャンセルメールアドレスが公開されることはありません。SES企業を卒業し、新たなステップへ踏み出した。User.2018.05.15【落とし穴】権限って大事だよね...。WordPress.。