30歳からのプログラミングスマートフォン用の表示で見る30歳からのプログラミング30歳無職から独学でプログラミングを開始した人間の記録。RailsCarrierWaveというライブラリを使うことで、簡単にRailsアプリに画像アップロード機能を付け加えることが出来る。github.comここではCarrierWaveを使うための具体的な手順を書いていく。10.13.6で行っている。インストールとアップローダーの作成まずはCarrierWaveをインストールする。installすれば、インストールされる。作成するアップローダーの名前でアップローダーというクラスを作れるようになる。するとapp/uploaders/image_uploader.rbが生成される。これが設定ファイルのような役割を果たすが、取り敢えずは何も手を加えずに進めることにする。今回は題材として画像掲示板のようなものを作ってみる。Postというモデルがあり、投稿者を表現するnameと画像を表現するimageというカラムを持つ。データ型はどちらもstring。マイグレーションも忘れずに行う。db:migrate最後にapp/models/post.rbを次のように書けば、モデルの作成は完了。ImageUploaderendたったこれだけで、画像を扱えるようになった。あとは、画像だからといって特別なことは何も意識せず、Postモデルを使ってアプリを作ればいい。実際にアプリを作っていく。config/routes.rbに以下を追記する。'posts#create'/postsでこれまでの投稿一覧を確認することができ、そこに設置してあるフォームに入力した内容を/posts/createにポストする。Postsで作成した後、次のように書く。endend画像アップロードなど意識していないことが分かる。フォームから送信されたものを受け取って保存しているだけで、特別な処理などない。最後に、posts#showに対応したビュー、つまりapp/views/posts/show.html.erbを作成すれば完成。%>4行目のpost.image.urlでアップロードされた画像のURLを取得できることと、10行目のファイル選択ボックスで対象のオブジェクトをimageにしていることがポイント。ファイルを選択した上で投稿をクリックすると画像がアップロードされ、画面上に表示される。アップロードされた画像はpublic/uploads/post/image/:postのID/ファイル名に保存される。バリデーション上述のようにapp/uploaders/image_uploader.rbを編集することで様々な設定を行うことが出来る。ファイルサイズによるバリデーション。以下の記述を追加すると、5MB以下の画像のみが許可されるようになる。endそれ以上のファイルをアップロードしようとすると以下のエラーメッセージが出る。MBサムネイルrmagickというライブラリを組み合わせることで、画像のリサイズも出来る。installしようとしたが、エラーが出る。10.13.6)だと、以下のエラーが出た。continue.確認したところImageMagickが必要なようなので、Homebrewでインストールする。installすると上手くいく。続いてapp/uploaders/image_uploader.rbを編集していく。CarrierWave::RMagickのコメントアウトを外した上で、以下を書く。endこれでアップロード時に、元画像とは別に300*300以内のサイズのサムネイル画像も保存されるようになる。保存先は元画像と同じディレクトリで、thumb_アップロードした画像のファイル名という名前で保存される。今回のデータ構造の場合、post.image.thumb.urlでアクセスできる。あるWebpackerの話。サイトを構築したサイトを作り直した。はてなブログPro30歳無職から独学でプログラミングを開始した人間の記録。月別アーカイブスポンサーリンクはてなブログをはじめよう!numb_86さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。