Table of Contents
初めに
FundastA の加納です!
今回Ruby on Railsでサイトを作成し、つまずいた所などを記載しておくので、参考になれば幸いです。
バージョン
Ruby | Rails |
3.1.2 | 7.0.3 |
Refileの導入
画像投稿機能にrefileを使用しました。
gem
githubに記載されている[github/refile]
1 2 3 |
gem "refile", require: "refile/rails", github: 'manfe/refile' gem "refile-mini_magick" |
と記入して、ターミナルで
$bundle install
で追加したgemをインストールします。
model
次に画像投稿機能を追加したいmodelに**attachment :画像を入れたいカラム名**を追記します。
1 2 3 |
class User < ApplicationRecord attachment :image end |
※今回のカラム名はimage_idですが、ここでは_idをつけないので注意です。
View
次に画像投稿用のフォームを制作です。
※ここが今回ハマったポイントです
自分がみていた参考資料がほとんど
1 2 3 |
<%= form_for @user do |f| %> <%= f.attachment_field :image %> <% end %> |
のように記述されており、その通りにプログラムすると下記のエラーがでました。
内容的には**引数の数が間違っています(与えられた3、期待される2;必要なキーワード:オブジェクト)**で表示がされません。
このエラーの記事をみると、バージョンが下げることで解決されています。
しかし何かできないかと試した結果
1 2 3 4 5 |
<%= form_for @user do |f| %> <%= f.file_field :image %> <% end %> |
このように記述すればエラーをなくすことができました。
Controller
次はストロングパラメータに先ほど追加したカラムを許可する必要があります。
※ここでも_idは必要ありません
1 2 3 4 5 |
def user_params params.require(:user).permit(:username, :email, :profile, :image) end |
Delete機能
delete機能のルーティング関連でもハマりました。
railsの標準の機能でdeleteのrouteは作られます。
1 |
<%= link_to "削除", path, method: :delete %> |
で削除機能はできるとありましたが、showにルーティングされました。
1 |
<%= button_to path, { method: :delete, form: { data: { turbo_confirm: "削除しますか?"} } } do %> |
原因はわかりませんが上記のようにbutton_toで記述するとdeleteにルーティングされるようです。
まとめ
今回、初めてRailsを使用してサイトを作成しましたが、参考にしていた資料のバージョンが古くて、同じ記述をしても動かなかったりかなり苦戦をしました。