Ryota400’s blog

エンジニアを目指して書いてます。

2021-09-01から1ヶ月間の記事一覧

モデルスペック

モデルスペックとは モデルスペックとは、モデルに関するロジックのテストを指す。 Rspecではテスト内容を記載したファイル(スペックファイル)をもとにモデルスペックを実行する。 モデルスペックの構造 モデルスペックには次を含める。 ・有効な属性で初…

RSpecのセットアップ

Rspecとは RspecとはRubyやRuby on Railsで作ったクラスやメソッドをテストするためのドメイン特化言語 (DSL)を使ったフレームワーク 特徴 Ruby on Railsのテストサポート モックやスタブ(擬似的なクラス)によるテスト支援 テストデータの作成支援 カバレッ…

管理画面 掲示板/ユーザのCRUD機能の作成

メニューのアクティブ・非アクティブ化 app/helpers/application_helper.rb def active_if(path) path == controller_path ? 'active' : '' end 三項演算子を使って、真のときはactive、偽のときは何も返さない('')ようにします。 controller_pathでコントロ…

管理画面へのログイン機能、管理画面トップページの作成

AdminLTE version3系をインストール yarn add admin-lte@^3.1.0 これでnode_modulesとpackage.jsonとyarn.lockというファイルがインストールされ、node_modules/admin-lteディレクトリにデフォルトテンプレートが記載されているので今回はその中のstarter.ht…

パスワードリセット機能の実装

sourceryのreset_passwordモジュールの導入 $ rails g sorcery:install reset_password --only-submodules class SorceryResetPassword < ActiveRecord::Migration[5.2] def change add_column :users, :reset_password_token, :string, default: nil add_co…

プロフィール編集機能の実装

ルーティングの設定 routes.rb resource :profile, only: %i[show edit update] 今回、プロフィール詳細画面と編集画面へのurlは/profile, /profile/editと 現在ログインしているユーザーの詳細と編集画面だけ表示できればいいので、urlでユーザーのidを参照…

掲示板の検索機能を実装

ransackで検索機能を実装する ransackとは、簡単に検索フォームを作成できるgem Gemfile gem 'ransack' bundle install コントローラーの修正 今回検索フォームを配置する、掲示板一覧(index)とお気に入り一覧(bookmarks)部分を修正していく。 app/controlle…

掲示板のページネーション

kaminariのインストール Gemfile gem 'kaminari' bundle install 以下のコマンドを実行すると config/initializers/kaminari_config.rbとページネーションのデフォルトの設定ファイルを生成する。 $ rails g kaminari:config boardモデルに1ページあたり2…

コメント投稿、削除、編集機能のajax化

コメント投稿、削除処理のajax form_withのlocal: trueを削除して非同期処理にする。 app/views/comments/_form.html.erb <div class="row mb-3"> <div class="col-lg-8 offset-lg-2"> <%= form_with model: comment, url: [board, comment], id: 'new_comment' do |f| %> <%= f.label :body %> <%= f.text_area :body</div></div>…

ブックマークボタンのajax化

Ajaxとは Webブラウザ上で非同期通信を行い、ページ全体の再読み込み無しにページを更新する方法のこと。 クライアントとサーバー間の通信においては、通常、同期通信と呼ばれる方法が用いられ、一瞬画面が白くなった後、画面が切り替わるような通信は、全て…

ブックマーク機能(お気に入り登録)の追加

モデルの作成 rails g model Bookmark user:references board:references referencesを使用することで、モデル間の関連付けであるbelongs_toを自動で追加してくれます。今回はUserモデルとBoardモデルにBookmarkモデルがbelongs_toで紐づいているという状況…

掲示板の編集・削除機能の実装

ルーティングの設定 resources :boards do resources :comments, only: %i[create], shallow: true end コントローラの設定 app/controllers/boards_controller.rb def edit; end def update if @board.update(board_params) redirect_to @board, success: t…

タイトルを動的に出力

動的タイトル表示とは ここで言うタイトルとはブラウザのタブの所に表示される文字のこと。 content_forメソッドとは content_forメソッドは、Railsにデフォルトで用意されているもので、画面毎に異なる内容を呼び出したい場合に使う。 ヘルパーメソッドを追…

コメント機能

モデルの作成 userとboardに紐ずいたcommentモデルを作成します bundle exec rails generate model comment body:text user:references board:references db/migrate/YYYYMMDDhhmmss_create_comments.rb class CreateComments < ActiveRecord::Migration[5.2…

掲示板の画像アップロード機能

確認ポイント ・gemのインストール gem 'carrierwave' gem 'mini_magick' CarrierWaveとは ファイルのアップロード機能を簡単に追加する事が出来るgem Minimagickとは 画像に対して、画像同士を合成したり、リサイズしたりと編集することができるようになる…

フォーム入力時エラー情報を個別表示

確認ポイント ・エラーメッセージ表示部分をformのテンプレートに記載せず、専用のパーシャルが作られていること。 shared/_error_messages.html.erb <% if object.errors.any? %> <div class="alert alert-danger"> <ul class="mb-0"> <% object.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div>…

掲示板の一覧機能の作成

掲示板の一覧機能の作成の確認ポイント ・Boardモデルのバリデーション validates :title, presence: true, length: { maximum: 数 } validates :body, presence: true, length: { maximum: 数 } ・Userモデル has_many :boards, dependent: :destroy depend…