学習記録

アウトプット用に作りました

RSpec 課題4で参照したサイト

タブの移動 Selenium + Capybaraで target="_blank" をテストする - Qiita Capybaraと仲良くなる(タブ・ウィンドウの操作について) - Qiita traitについて FactoryBotのtraitでリレーション先のModelのtraitを使って設定することができる - コード日進月歩…

RSpec 課題3で参照にしたサイト

読み込むgemについて。 サポートが終了したchromedriver-helperからwebdrivers gemに移行する手順 - Qiita 読み込むgemとcapybaraについて。 【Rails】『RSpec + FactoryBot + Capybara + Webdrivers』の導入&初期設定からテストの書き方まで | vdeep ログ…

RSpec 課題2で参照したサイト

FactoryBotのテストデータ使うときに使用。 factoryBotの{ }はどういう挙動になるのか - その辺にいるWebエンジニアの備忘録 --format documentationの知識。 RSpecには表示の出力をキレイにする --format documentation というオプションがある - コード日…

メニュータブのアクティブ・非アクティブを設定する

アクティブ・非アクティブとは、今自分がいるページのメニュー名をアクティブにします。 例えばTwitterのサイドメニューでも使われている機能です。 画像では「通知」のページを開いているので、「通知」がアクティブになっています。 実装方法 Railsでアク…

ransackを使ってプルダウンのセレクトボックスを作る

以前ransackを使った基本の検索機能の作り方をまとめていました。 ransackを使って検索機能を実装する - 学習記録 またransackを使った日付検索の機能の実装についてもまとめてあります。 ransackを使った日付検索 - 学習記録 今回は下記のようなプルダウン…

ransackを使った日付検索

以前更新したransackに関してのブログ。 ransackを使って検索機能を実装する - 学習記録 predicateの種類 predicateとは「述語」という意味です。 (カラム名を)どのように検索するのかを指定するときに使えます。 ransackでは下記の方法を使って検索の範囲等…

enumをi18n対応させるenum_helpを導入する

enumとは 数字を値と紐付けているようなデータの管理をしたいときに使います。 例えば管理者権限の有無を管理する場合などに使うことができます。 (user.rb) enum role: { general: 0, admin: 1 } このように、数字で管理をしているだけだと、わかりづらいで…

ページタイトルの出力

記事タイトルとは、このような各ページの名前のことです。 ここでは、「ブログの記事名 - ブログ名」 という形で出力されています。 この表記がどのように書かれて出力されているのかを説明していきます。 まず各ページに同じタイトルを表示させるには、 app…

configを導入して環境ごとに定数を管理する

configとは定数管理のGemです。 定数を管理する箇所が1箇所にまとまるのでメンテナンスが楽になります。 使用方法 gemfileに追加後、インストールします。 使用するファイルが生成します。 rails g config:install ※gitignoreに自動で下記の内容が追加されま…

letter_opener_webを導入

開発環境で毎度メールが送られてしまうと面倒なので、 開発環境でのみletter_openerを導入します。 開発中にrailsから送信したメールを確認することができます。 使用方法 Gemfileにletter_opener_webを追加してインストールします。 ここで注意しなくてはい…

ActionMailerを使用

ActionMailerとは railsにデフォルトで備わっているメール送信機能です。 app/mailers配下にメール送信用のメソッドが作成され、 app/views/メーラー名配下にメールの文言ファイルが作成されます。 通常のテキストメール送信に加え、HTMLメールが送信できた…

Sorceryで用意されているサブモジュール

ユーザー認証用に導入したgemのsorceryには、 単純なパスワードによる認証機能に加えて様々なモジュールが用意されています。 使いたい機能をサブモジュールとしてインストールしていき、 それを元に自分たちで処理を書いていくという方式を取っています。 U…

ransackを使って検索機能を実装する

ransackとは Railsで検索機能を実装する場合に使用するgemです。 使い方 gemfileにgem 'ransack'を導入して、bundle installします。 gemを新たに追加した時は、サーバーを再起動させる必要があります。 まずコントローラを作成していきます。 def index @q …

kaminariを使ってページネーションを実装

ページネーションとは 1つのページに掲載するコンテンツが多くなってしまった時、 複数ページに分けて表示させるようにしたものです。 下記のような1,2,3,4,.....のようなものです。 railsではkaminariを使って、ページネーションを実装することができます。…

jQueryで要素を追加するメソッド

append 親要素(div)の中の、子要素の最後に指定要素やテキストを追加します。 HTML <div class="sample"> <h1>あいさつ</h1> <p>こんにちは</p> <p>こんばんは</p> </div> jQuery $('div').append('<p class="add">子要素pの後ろに追加</p>'); 結果 <div class="sample"> <h1>あいさつ</h1> <p>こんにちは</p> <p>こんばんは</p> <p class="add">子要素pの後ろに追加</p> </div> prepend 親要素(div)の中…

Ajaxを実装する

Ajaxとは Webブラウザ上で非同期通信を行い、ページの再読み込みなしに ページを更新するためのJavaScriptのプログラミング手法です。 Ajaxを使うことで、スムーズな操作を行うことができます。 いいね機能を実装するときを例に説明します。 Ajaxを使わない…

アクションを追加する

railsにおける基本的なアクションは、 index new create update show edit destroyの7つあります。 それ以外のアクションを追加する必要があるときは、 memberとcollecrionを使うことで追加することができます。 member コレクションの各メンバーに対してア…

N+1問題

N+1問題とは SQLが必要以上に実行されてしまうとパフォーマンスが落ちるという問題です。 日常生活で例えるなら、お会計の時に品物をまとめて買うのではなく、 一つずつお金を払って、買っているような効率の悪いイメージです。 N+1問題の例 UserモデルとTwe…

carrierwaveを使って画像アップロード機能を追加する

carrierwaveとは Railsにおける画像アップロード用ライブラリです。 Uploaderクラスを別に持つから、 モデルが異なる場合でも都度記載する必要がありません。 gemfileにgem carrierwaveを追加し、bundle installを行います。 carrierwaveの使用方法 まずアッ…

Fakerを使ってダミーデータを作る

Fakerとは ダミーデータを自動生成してくれるgemです。 gemfileにgem 'faker'を記載してbundle installを行い使えるようになります。 使い方 seeds.rbにUser(10件)とTask(20件)のダミーデータを用意します。 (db/seeds.rb) 10.times do User.create!(last_na…

アソシエーション

アソシエーション Railsで作成するモデルの間に関係性を定義したい場合、 アソシエーションという機能を使うことができます。 userモデルでは、 has_many :tasks, dependent: :destroy taskモデルでは、 belongs_to :user が定義されていないとアソシエーシ…

デコレーターの導入

デコレーターとは 既存のクラスに機能を付け加えたい場合や、 既存機能に少しだけ修飾を加えたい場合に使われるパターンです。 色々なモデルで同じようなメソッドを使いたいときに、 userモデルでもcommentモデルでも定義していたら手間です。 またモデルで…

flashメッセージを表示する

flashメッセージとは Webサービスにて何かの処理を行なった際、 それが正しく行われたかをユーザー側で確認できるよう、 メッセージで表示させるための機能です。 例えば、ログインが成功しましたよ、失敗しましたよ、 などのメッセージを表示することでユー…

i18nによる日本語化対応

i18nとは Railsではさまざまな言語に対応するために、このgemがデフォルトで導入されています。 gemを導入することで、gem内部の一般的なメッセージについての日本語での国際化設定ファイルを参照するようになります。 なのでconfig/locals/ja.ymlというファ…

sorceryを使ってログイン機能を実装する

sorceryとは Railsに認証機能を実装するためのライブラリです。 認証機能とは、システムへのログインやユーザの有効性確認を行うための機能のことを言います。 同じように認証機能を提供してくれているものとしてdeviseなどがあります。 sorceryの使い方 ま…

RailsでBootstrapを導入する

Bootstrapとは Railsにはデフォルトで特定のデザインを含んでいません。 そのため見栄えの良いアプリケーションを作るには、一から自分でデザインしなければいけません。 Bootstrapというフロントエンドワークを使えば、手軽に見栄えの良いページを作ること…

アセットパイプライン

アセットパイプラインとは JavaScript、CSS、画像のリソース(アセットとよぶ)を最小化または圧縮して効率よく扱うための仕組みです。 アセットパイプラインはsprockets-railsというgemによって提供される機能で、デフォルトで有効になっています。 ①高級言語…

マニフェストファイル

マニフェストファイルとは どのファイルを読み込むのかをまとめたファイルのことをいいます。 HTMLでは、そのページで必要となる読み込みファイルを、 application.html.erbファイル内のに記載します。 <head> <%= stylesheet_link_tag 'application', media: 'all</head>…

layoutファイル

layoutファイル アプリケーション全体で変わらないものを記述しておくファイルです。 変わるものは個別のファイルに記述し、 表示するときにはその二つのファイルを足し合わせて出力するというのがrailsの基本です。 通常このファイルは、app/views/layouts…

rails generateで生成されるファイルの設定

rails generateコマンド rails newコマンドで作成したrailsのアプリケーションの中に、 必要な関連ファイルを自動生成してくれるコマンドです。 このコマンドを実行した後に不要なファイルを一つずつ消去していくのは面倒なので、 最初から指定ファイルを自…