Programming Journal

学習したことの整理用です。

Rails

【RSpec】System Spec

やりたいこと 前提 実装の流れ Gem導入 SystemSpecファイルの作成 ドライバの設定 モジュールの設定 モジュールを読みこめない… タグの設定 SystemSpecファイルの設定 create_listで連続するテストデータを作成する。 letとlet!の違い エラーが起こったとこ…

【RSpec】モデルスペック

前提 RSpecのセットアップ済 FactoryBot導入済 実現したいこと 既存のTaskモデルのバリデーションをチェックしたい 文法に馴染みがなく、簡単なテストなはずなのに半日くらいかかってしまいました。 分かりにくかった部分だけ、復習していきます。 モデルス…

Sorceryを使ってFacebookでログインする

実装の流れ mkcertを使って、SSL通信(https)をできるようにする Facebook for Developersに登録し、アプリのキーやIDを取得する sorceryのwikiに沿って設定 Facebookログイン(クライアントOAuth)の設定 細かいことは、参考にしたブログに詳しいので、自分…

エラー発生時にslackへ通知する

実装の流れ gem exception_notificationの挙動 slack通知設定 credentials.yaml.encの編集 エラーハンドリング設定 Rails.root.joinって…? Pathnameとは 他の分かりにくかったコード renderのオプション エラー 参考にしたもの 実装の流れ gem Slack-notifi…

ransackを使って日付検索&プルダウン選択する

実装したいこと 前提 実装の流れ Controller Custom Predicates ransackのpredicateとは? Arelとは end_of_day View 実装したいこと 掲示板一覧画面に、作成日で掲示板検索できる機能を実装したい 前提 ransack導入済み 実装の流れ コントローラーにransack…

enum_helpでenumをi18n対応させる&ransackのプルダウン検索に対応させる

前提 実装したいこと 実装の流れ Install EnumHelp I18n local file View ransackのプルダウン検索実装 Controller View f.select エラー 参考 前提 enum&ransack&i18n導入済です。 AdminLTEを使って管理者用機能を実装する(トップページ) - Ruby on Rai…

サイドメニューのアクティブ・非アクティブ化

実装したいこと 掲示板関連のページを使用しているときは、サイドバーの「掲示板一覧」をアクティブの状態にしたい。 ユーザーのときも同様。 サイドバー 実装 Bootstrapを使用しているので、例えばこのようにclassにactiveを含めると、アクティブにしてくれ…

管理画面へのログイン機能の実装

実装したいこと 実装の流れ Controller Routing View エラーの記録 実装したいこと 管理者用トップページは前回作成したので、今回は管理画面へのログイン機能を実装していきます。 管理者画面へのログインページを作成 管理者画面へのログインページを使っ…

AdminLTEを使って管理者用機能を実装する(トップページ)

実装したいこと 実装の流れ AdminLTEをインストールする マニフェストファイルの設定 そのため、個別にファイルを読み込む記述に変更しました。 アセット関連の設定 Controller Admin::BaseController作成 Userモデルにadmin判定用のカラムを追加する enumを…

letter_opener_webを使って、開発環境でメールを確認する

環境開発でメールを確認したい letter_opener_webを導入する 動作確認 参考 環境開発でメールを確認したい 前回、パスワードリセット機能を実装しましたが、実際に送信されるメールを確認したいです。 ※既にメイラーは前回実装済。 letter_opener_webを導入…

ransackで検索機能を実装する

掲示板の検索機能を実装したい 要件 ransackを導入する Controller Views urlオプションについて パーシャルを読み込む 参考 掲示板の検索機能を実装したい 掲示板の一覧画面に以下のような検索フォームを配置し、入力したワードを含むタイトルor本文を持つ…

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

kaminariを導入し、1ページにつき掲示板を20個表示させたい 現在は全ての掲示板が、1ページに表示されています。 今後、掲示板の数が増えることを考え、見易いようにページネーションしていきます。 ページネーションとは、例えば、1ページにつき一度に2…

開発中にデバッグ情報を可視化する

レイアウトにデバッグ情報を追加する <body> <%= debug(params) if Rails.env.development? %> #ここを追加。 </body> デバック情報が見られるようになる デバッグ情報が、下部に現れる Rails 6.0 対応でプログラミング学習 - Railsチュートリアルrailstutorial.jp

Ajaxでブックマークボタンを実装する

Ajaxとは ブックマーク機能をajaxを使用した処理に変更すると、ページの一部だけ(☆★部分)が更新され、実際の処理はバックグラウンドで行われます。(非同期通信) ★と☆が入れ替わるだけで、実際の処理(ブックマークの追加・解除)はユーザーの見えないと…

掲示板にお気に入り機能を実装する②

前回は、モデルのアソシエーションの設定を終えました。 今回は、ルーティングとコントローラー、ビューの設定です。難しかった。間違っているかも また、各判定の処理はモデルに書いていきます。 ルーティングの設定 resources :users, only: %i[new create…

掲示板にお気に入り機能を実装する①

今回は難しくてかなり詰まってしまいました。復習します。 今回実装したいこと 掲示板を「お気に入り」すると★マーク、「お気に入り解除」すると☆マークに変わる。 「お気に入り」「お気に入り解除」 それぞれで、フラッシュメッセージを表示する。 「お気に…

掲示板の編集と削除機能を実装する

実装したいこと 掲示板画面 掲示板一覧画面と詳細画面にそれぞれ、編集と削除ボタンを表示する。 編集・削除ボタンは、掲示板作成者本人にしか表示されない。 削除ボタンをクリックすると、「本当に削除しますか?」と確認アラートが表示される。 直接URLを…

カスタムヘルパーを使って、タイトルを動的に出力する

ページごとにタイトルを変化させて出力したい タイトルとは、ブラウザのタブ部分に表示されるここのこと↓ タイトル 「掲示板作成 | 固定タイトル」のように、左側部分だけページごとに出力を変えたい 掲示板詳細ページのタイトルは、掲示板のタイトルを表示…

掲示板にコメント機能を実装する③

前回からの続きです。 モデル・ビュー側の設定は終わったので、コントローラーを設定していきます。 (どういう順番でやるのが正しいんでしょうか…) boards_controllerへの追記 先にViewを作成していきましたが、掲示板詳細画面(show)でコメントの新規作成…

掲示板にコメント機能を実装する②

ルーティングの設定 ルーティングをネスト(入れ子にする)して、boardsとcommentsとの親子関係を表していきます。 今回必要なのはcreateアクションだけなので、とりあえずこのようにネストすると resources :boards, only: %i[index new create show] do re…

掲示板にコメント機能を実装する①Commentモデルの作成と他モデルの関連付け

掲示板にコメントを書き込めるように実装する 掲示板一覧から掲示板詳細画面へ遷移すると、その掲示板についてコメントを書き込めるようにしたい 書き込んだコメントは、同じページの下部に更新順に表示される コメントを削除・編集できるのは、コメントした…

CarrierWaveを使って、掲示板に画像をアップロードする

今回、実装したいこと 掲示板に画像を投稿したい。 画像を登録する前に、プレビュー表示したい。 画像の登録がない掲示板は、デフォルトの画像を表示する。 登録できるファイルの種類を、jpg,jpeg,png,gifだけに制限したい。 許可されている以外のファイルを…

フォームの入力に失敗したとき、エラーメッセージを表示する。

フラッシュメッセージのようなエラーメッセージを表示したい 前提 エラーメッセージを表示するパーシャルを作成する BootStrap使い方メモ つくったエラーメッセージ用のパーシャルをビュー側で読み込めるようにする。 f.objectって?? フラッシュメッセージ…

ログインしているユーザーが掲示板を作成するには

UserモデルとBoardモデル間で関連付けを行っているときの掲示板作成方法 掲示板作成の機能を実装しようとしたところ、登録に成功しない… def create @board = Board.new(board_params) #ここを修正する。 if @board.save redirect_to boards_path, success: …

パーシャルを使って掲示板一覧を表示する

掲示板一覧のページを作成する。 パーシャルを作成する。 index.html.erbからさっきのパーシャルを読み込む 掲示板一覧のページを作成する。 こんな完成図のイメージ(名前はFakerを使ったダミー) 掲示板一覧 パーシャルを作成する。 個々の掲示板パーツを…

Fakerの使い方

Fakerでサンプルデータを用意する 掲示板機能を備えたページを作成するときに、サンプルデータを投入してみます。 Gemfile にFaker gemを追加する。 gem 'faker' いつものようにbundle install データベース上にサンプルデータを生成するRailsタスク 10人…

decoratorを導入する。

decoratorとは viewを装飾するメソッドを追加したいが、モデルに書くとファット化してしまうため、decoratorに記述する。 modelとviewの間にdecoratorを挟むて感じ(たぶん) 早速実装 今回は、Decorator内でfull_nameというメソッドを定義して、 姓名をview…

Bootstrapを利用したフラッシュメッセージの設定

Railsにおけるフラッシュメッセージ フラッシュメッセージとは、ログインに成功/失敗したときなど、ページの一番上にでる一時的なメッセージのこと。 Railでは、flashというハッシュ形式のオブジェクトが設定されている。 デフォルトではnoticeとalertという…

gemを使ってbootstrapとfont-awesomeを適用する方法メモ

gemとは Ruby用のパッケージ管理ツール bootstrapとfont-awesomeを導入する ①Gemfileに以下を追記する。 ※ jqueryを記入漏れし、ドロップボタンが動かず、30分溶かした… gem 'bootstrap', '~> 4.1.1' gem 'jquery-rails' gem 'font-awesome-sass', '~> 5.13.…

image_tagの使い方

railsにおけるimage_tagの使い方メモ アセットパイプライン - Railsガイド ①画像が、app/assets/image 以下にあるとき… 画像名でOK <%= image_tag 'sample.jpg' %> ②画像が、public/以下のとき… publicディレクトリからの相対パスを指定する。 <%= image_tag…