memberとcollectionオプション(ルーティング)

resourcesを用いると7つのルーティングが一度に作成される。memberとcollectionオプションはどちらも新たにルーティングを加えたい場合に用いる。 member…特定のデータ(:idが入る)に対するアクションを追加する際に用いる。 collection…ユーザー検索や商品…

Railsのconfigについて

Railsではconfigディレクトリ下のファイルで設定を変更する。 ♡config/application.rb 全環境で共通する設定ファイル rails generateする際に生成したくないファイルがあった場合、このファイルに変更を加えていく。 assetsを生成したくない場合は、 config.…

掲示板の検索機能を実装(ransack)

<実現したいこと> 検索フォームの作成をする ♡検索フォームに入力された文言が掲示板のタイトルか本文に含まれている掲示板のみ表紙させる ♡ブックマーク一覧のページで検索した場合、「ブックマークした掲示板の中から」検索条件に合致したものを表示させ…

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

♡実現したいこと ページネーションとはそのまま、ページ機能を作ること。google検索をしたときに下にある、1.2.3...のようなもの。 今回の場合は掲示板を何件か表示したら(例えで今回は10件)、次のページに移動して、また10件表示させる。 ♡手順 ①gemのkamin…

ブックマーク機能の実装(モデル)

<実現したいこと> ♡bookmarkを通さずuserとboardを関連性を維持しつつ、 bookmarkを通してuserとboardのテーブルを関連付ける。 ♡コントローラーの記述量を減らすこと、汎用性を高めるためのモデルへの記載をする。 ♡掲示板を作ったユーザーがお気に入りをし…

掲示板の編集と削除機能の実装(view)

<実現したいこと> 編集と削除ボタンは掲示板を作成した本人にのみ表示させる ①編集・削除ボタンの部分テンプレートを作成 <ul class='crud-menu-btn list-inline float-right'> <li class="list-inline-item"> <%= link_to edit_board_path(board), id: "button-edit-#{board.id}" do %> <%= icon 'fa', 'pen' %> <% end %> </li> <li class="list-inline-item"> <%= link_to boa</li></ul>…

掲示板の編集と削除機能の実装(ルーティングとコントローラー)

<実現したいこと> ♡編集機能と削除機能の追加 ♡掲示板を作成した本人のみが、編集と削除をできるようにしたい <手順> ♡config/routes.rbに編集と削除機能の定義を追加する ♡app/controllers/boards.controller.rbに定義を追加する ①config/routes.rbに編集と…

タグのタイトルを動的に出力

♡app/helpers/application_helper.rbに必要な内容を記載 ♡app/views/layouts/application.html.erbで全体に反映する ♡各viewに反映する ①app/helpers/application_helper.rbに必要な内容を記載 module ApplicationHelper def page_title(page_title = '') ba…

コメントの編集・削除ボタン表示の判定ロジック(モデルに記載)

今回の実装ではコメントの編集・削除ボタンが表示されるのは、コメントを投稿した本人のみにしたい。 判定ロジックを用いるが、今後メンテナンスをするときのためにmodelのみにまとめて記載する。 ♡判定ロジックはUserモデルにまとめて記載する等、自分で決…

routes/controllerへの追記(コメント機能の追加)

♡config/routes.rbへの追記 ♡app/boards.controller.rbへの追記(詳細画面の追加) ♡app/comments.controller.rbの設定 ①config/routes.rbへの追記(ネストする) resources :boards, only: %i[index new create show] do resources :comments, only: %i[create]…

コメントのDB作成と紐付け

<手順> ♡コメントのデータベースの作成し、DB側に制約をかける ♡userとboardモデルに紐付けをする ♡コメントモデルに制約を追加する ①コメントのデータベースを作成 rails g model Comment body:text user:references board:references 外部キー制約をする際…

エラーメッセージのパーシャル作成

ユーザーの新規登録や掲示板の作成時に、「○○を入力してください」というフラッシュメッセージを表示したいが、複数のビュー画面で表記したい。 効率的に表記するためにパーシャルを作成する。 すでにモデルにバリデーションは記載してあるので、続きからの…

掲示板(作成機能)

サイトに登録している人がboardを作成できるよう機能を作る。 ①ビュー側から入力された情報を保存する app/controllers/boards_controller.rb のcreateに以下のように定義する。 def create @board = current_user.boards.new(board_params) if @board.save …

ストロングパラメーター(復習)

①ストロングパラメーターとは web上から入力されるパラメーターが安全なものか検証し、取得する仕組み。 メソッドに受け付けるカラム名(id,name等列にあたる部分)を事前に指定しておく。 指定されていないカラムデータが送られてきた場合、弾くことができる…

n+1問題(確認方法)

今回調べた限りでは2パターンあるよう。 ①rails s をしてサーバーを立ち上げてコンソールで確認するパターン。 パッと見でもN+1問題が起こっていると、明らかに分量が多いのでわかる。 ②Gemファイルを導入して確かめる方法 bulletというgemファイルを導入す…

外部キー制約

<外部キー制約とは> データベース側の項目に付ける制限 好きに値を入れられないようになっており、別テーブルの項目から値を選んで入れるように指定する。 今回の場合はuserテーブルとboardテーブルが依存関係にある。 FOREIGN KEY 制約の設定は子テーブル側…

i18nを用いた時間表記(日本時間)

掲示板の投稿時刻を日本時間で表示するため、i18nを用いる。 以前、i18nは導入済みなため、日本時間を表示するための手順のみ記載する。 <手順> ♡ya.ymlに必要事項を記載する ♡表記したいページに埋め込む ♡config/locales/application.rbに日本時間の設定を…

N+1問題の解決

N+1問題とは N+1問題は解決すれば、1回のアクセスで取ってこられるデータを何度もアクセスして取ってくる、非効率的な状態。 今回の課題では、1人のuserに対し、複数の投稿(今回はboard)があるため、1人のuserの投稿を一気に複数取ってくることで、デー…

Fakerを用いたダミーデータの作成

掲示板一覧を作成するにあったって、ダミーデータを使用するため。 大まかな流れ ♡Fakerを導入 ♡db/seedsに内容を記載 ♡DBをリセット、作成 ①Fakerのインストール Gemfileに gem 'faker' を記載し、bundle installする。 ②db/seedsに内容を記載 20.times do …

掲示板の一覧機能のモデル作成・編集

<大まかな流れ> ♡モデルファイルの作成 ♡モデルファイルの中身の編集 ♡親モデル、子モデルを結びつける ♡モデルに記載するRails側の制限を記載する ①モデルファイルを作成する rails g model Board title:string body:text でmodel下にborad.rbファイルを…

iT用語集

知らないIT用語が飛び交っているので、メモとして残します。 ♡ラップする、ラッピング あるクラスの関数、データ型などが提供する機能やデータを含み、別の形で提供すること。 用意されたクラスや関数を「ラッパー」(wrapper)という。 参考文献:ラップ(ラ…

decoratorの導入

今回はfirst_nameとlast_nameを用いて、フルネームを表記したいため、 full_nameを定義していく。 <decoratorとは> ・機能を少し付け加えたい場合や、装飾を少し加えたい場合に用いる。 →全てモデルに書いてしまうとファットになってしまう。 →decoratorを…

フラッシュメッセージの実装

<やること> ・ログイン、ログイン失敗、ログアウトのフラッシュメッセージの実装方法。 ・フラッシュメッセージの表示を viewに追加する際、パーシャルを用いる。 ①コントローラー全体にフラッシュメッセージの定義をする。 app/controllers/application_c…

i18nの導入

ボタンやメッセージはデフォルトで英語なので日本語にするために導入。 今回はviewに適用していく場合。 <手順> ①Gemfileにi18nを記載してbundle installする gem 'rails-i18n', '~> 5.○.○' ○部分はバージョン ②config/application.rbに config.i18n.default…

rake db:migrateでエラーが生じる

rake db:migrateをしたところ現在使用しているrakeが合わなかったため、バージョンを変更した。 rake db:migrate を実行すると rake aborted! Gem::LoadError: You have already activated rake 13.0.3, but your Gemfile requires rake 12.3.3. 現在、用い…

Cookieとセッションとその関係性

HTTPの性質はステートレス <ステートレス> ・情報を保持し続けることができないため、リクエストごとに情報がリセットされてしまう。 ・状態を維持することができない。 1回目でのやりとりが2回目には忘れられてしまう。 →Cookieやセッションが必要にな…

bootstrapとfont-awesomeの導入

今回、Railsはver5.○.○を使っており、gemを用いて ・bootstrapはver4.○.○ ・font-awesomeはver5.○.○ を導入する。 前提として、app/assets/stylesheets/application.cssはapplication.scssへファイル名を変更しておく。 ♡bootstrap ・HTML、CSS、JavaScript…