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

STI 単一テーブル継承

STI 単一テーブル継承 [Tag]モデルと[Author]モデルは、同じカラム名が必要になるので、[Taxonomy]テーブルに[Tags]テーブルと[Author]テーブルの値を保存に[Taxonomy]テーブルのtypeカラムに何のモデルのデータかを保存する class Taxonomy < ApplicationRe…

パンくずリスト

パンくずリスト パンくずリストは、以下のようなもの パンくずリストを作成するメリット ・ユーザーが今どのページにいるのか分かるようにするため ・クローラーの巡回を手助けする事でSEO対策になる ※ クローラー: インターネット上に存在するWEBサイトや画…

rails コマンドが使えない時の対処法

rails コマンドが使えない時の対処法 下記のようにrailsコマンドが使えない時は、[rails]Gemがインストールされていない可能性がある。 rbenvなどでRubyのバージョンを新しくした場合などに発生することがある 通常は、下記のように[bundle]と[rails]が存在…

リンク時にタブを変えるHTML記載方法

リンクをクリックした時にタブを変えるHTML記載方法 下記のように、[target:'_blank']をオプションで記述する <%= link_to 'View Todos', project_tasks_path(@project), target:'_blank', rel: 'noopener' %> ※ポイント ・RSpecテスト実行時の注意点 下記の…

byebug Gem

[byebug]Gemの導入と使い方 Gemfileに以下のように記述する(railsをインストールしている場合は、デフォルトでインストールされている) gem 'byebug' ↓ $ bundle install ↓ 下記のようにデバッグしたいところに[byebug]を記述する [spec/system/task_spec.rb…

RSpecのシステムテスト

RSpecのシステムテストの手順と記述 Gemfileに以下のように記載する [Gemfile] group :test do gem "capybara" gem 'webdrivers' end ※ ・[capybara]Gem: ブラウザ上でのリンクのクリック、フォームの入力等のUI操作コマンドで実行できるようにするもの。 ・…

<!DOCTYPE html>について

について のDOCTYPE宣言についてハマったことがあり、その重要性を知ったので、こちらにまとめます。 今回ハマったことは、以下になります。 [app/views/layouts ファイル] <html> <head> <meta charset="utf-8"> <meta lang='ja'> <meta name="viewport" content="width=device-width, initial-scale=1"> <title><%= page_full_title(yield(:title), admin: tr…</meta></meta></meta></head></html>

RSpecを使ったバリデーションテスト

RSpecを使ったバリデーションテスト 下記のようなスキーマ構造とバリデーションが設定されているRSpecを用いたモデルのバリデーションテスト [app/models/task.rb] class Task < ApplicationRecord belongs_to :user validates :title, presence: true, uniq…

RSpecのセットアップ

RSpecの使い方 RSpecの導入は、以下になります。 下記のようにGemfileに記述する テストデータを作成する[factory_bot_rails]Gemも一緒に入れる ※[factory_bot_rails]は、テスト環境だけでなく開発環境でも rails console 等で動作確認ができるため、下記の…

GitHubのforkとclone

GitHubのforkとclone forkとは? 第三者のリポジトリを自分のリモートリポジトリにコピーすること cloneとは? リモートのリポジトリをローカルのリポジトリにコピーすること forkの手順 forkしたい第三者のGitHubのリポジトリに行き、右上にあるforkをクリ…

form_withのパラメーターの行き先の仕組み

form_withのパラメーターの行き先の仕組み [form_with]を使うと、パラメーターの行き先をcreateアクション(POST)やupdateアクション(PATCH)などと良い感じで分けてくれるが、この仕組みを説明します。 [app/views ファイル] <%= form_with model: @user, url…

DBの構造を直接確認する方法

DBの構造を直接確認する方法 [schema.rb]で確認できるのは、Railsが作成したDBの設計図だが、直接DBの設計図を確認する方法は以下になる。 [] $ sqlite3 db/runteq_normal_development 今回マイグレーションファイルを調べるにあたり便利だったコマンドがあ…

link_toの使い方について

[link_to]の使い方について [link_to]で以下のように記述した場合と生成されるHTMLは、以下のようになる [app/views ファイル] <%= link_to edit_admin_board_path(@board) do %> <button type="button" class="btn btn-success"><%= (t 'defaults.edit_button') %></button> <% end %> <a href="/admin/boards/1/edit"> </a>

RSpecのスクリーンショットのHTMLの確認

RSpec実行時のスクリーンショットのHTMLの確認 RSpec実行時にテストに失敗した時のスクリーンショットの確認方法は、テストが失敗したところでbinding.pryなどでテストを止めて[save_and_open_page]を実行するとHTMLが確認できる

セレクトボックスの実装

セレクトボックスの実装 下記のようなセレクトボックスを実装する方法です セレクトボックスの記述は、以下のようになる <%= f.select 属性, 選択肢の集合, {オプション}, {HTMLオプション} %> もしくは <%= f.select( 属性, 選択肢の集合, {オプション}, {H…

ransackを利用した日付指定での検索方法

[ransack]Gemを利用した日付指定での検索方法 下記のように日付を指定しての検索方法の実装方法になります フィールドにカレンダー機能を付与する場合は、以下のように[f.date_field]を利用する [app/views ファイル] <%= search_form_for @q, url: admin_bo…

enum_help Gemによるenumの翻訳

[enum_help]Gemによるenumの翻訳 下記のように設定したenumを日本語で表示できるようにするのが、[enum_help]Gem [app/models ファイル] enum role: { general: 0, admin: 1 } 上記のようにenumを設定した場合は、下記のようになる [enum_help]Gemを使った場…

メニューのアクティブ化

メニューのアクティブ化 下記のようにメニューボタンをクリックしたらアクティブ化する [手順] Bootstrapの機能により、classでactiveを設定すると設定した部分がアクティブ化する メニューのボタンが複数存在する時に以下のようにそれぞれにclassでactiveを…

ローカルのコミット履歴をGitHubにも反映させる方法

ローカルのコミット履歴をGitHub(リモート)にも反映させる手順 自分のGitHubを開き以下のようにRepositories(リポジトリ一覧)をクリックし、Newをクリックして新規のリポジトリを作成する。 ↓ 下記のような画面になるので、リポジトリの名前を決めてCreate r…

管理画面の作成

[管理画面の作成] 管理画面を作成するのに今回は、AdminLTEというパッケージ管理ツールを用いる。 [AdminLTE]をインストールするのにyarnからインストールする。 Gemからもインストールできるが、Gemだとメンテナンスが追いついていなく、バージョンも古いバ…