【Rails 】リファイル導入(簡易メモ)
Refileを追加するには、以下のように記述します。
Gemfile
gem "refile", require: "refile/rails", github: 'manfe/refile'
サイズ調整など画像加工を行うgem(MiniMagick)も追加する。
MiniMagickを追加するには、以下のように記述します
# 画像投稿用gem
gem "refile", require: "refile/rails", github: 'manfe/refile'
# 画像加工用(サイズ調整など)gem
gem "refile-mini_magick"
bundle install コマンドを実行する
読み込めなかった場合の修正方法
必要なgemがインストールされていなかった場合は、以下の手順で対処。
1. 「Make sure that……」以降の該当部分をコピーする。
2. 「sudo」と入力する。
3. 半角スペースを空けて、1.でコピーしたテキストを貼り付ける。
4. Enterキーを押す(コマンドが実行される)。
5. 「bundle install」と入力する。
6. 再びエラーが出たときは、上記の1.~5.を繰り返す。
image_idカラムを追加する
画像を保存するためのカラムを追加します。
カラム名は、「image_id」のようにidを付けて設定します。
カラムに追加するマイグレーションファイルを作成し、データベースを変更します。データ型は文字列型です。
$ rails g migration AddImageIdToLists image_id:string
データベースに反映させる
$ rails db:migrate
attachmentメソッドを追加する
Refileを使うには、attachmentメソッドをモデルに追加する必要があります。Listモデルに以下のように追加します。
カラム名はimage_idですが、ここでは_idをつけません。
app/models/list.rb
class List < ApplicationRecord
attachment :image
<% end >
Strong Parametersに追加する
TodolistControllerのStrong Parametersに、imageカラムを追加します。
app/controllers/todolists_controller.rb
private
def list_params
params.require(:list).permit(:title, :body, :image)
end
end
画像用のフィールドを追加する
投稿フォームに、画像投稿フォームを追加します。
app/views/todolists/new.html.erb
<h1>新規投稿</h1>
<!-- form_for部分 -->
<%= form_for(@list) do |f| %>
<h4>タイトル</h4>
<%= f.text_field :title %>
<h4>本文</h4>
<%= f.text_area :body %>
<!-- 追加部分 -->
<h4>画像</h4>
<%= f.attachment_field :image %> <%= f.submit '投稿' %>
<% end %>
【注意】上記コードで画像が表示されない場合は、:fillによるサイズ指定ではなく、size:で指定してください。
この際、×(かける)ではなく、x(小文字のエックス)になりますので注意しましょう。
app/views/todolists/index.html.erb
<%= attachment_image_tag list, :image, format: 'jpeg', size: "100x100" %>
app/views/todolists/show.html.erb
<%= attachment_image_tag @list, :image, format: 'jpeg', size: "300x300" %>
RuntimeErrorが表示された場合
「Refile.secret_key……」の部分(シークレットキー)をコピーしてください。
コピーしたシークレットキーを、application_controller_renderer.rbファイルの最後に貼り付けます。
application_controller_renderer.rbファイルは、config/initializersディレクトリにあります。
この記事が気に入ったらサポートをしてみませんか?