ransackを使った検索機能

gemransackを用いると、簡単に検索機能を追加できる 導入 gem 'ransack' $ bundle install これでransackのインストールは完了 コントローラーの編集 検索するためのアクションを追加します。検索した結果を表示するために新たにsearchアクションを追加する…

jsの$()とか#とか

課題17 $("#error_messages").remove() まず、このコードを細かく見ていく。"#error_messages"は、idがerror_messagesのものを対象とする、という意味で、removeは外すという意味なので、idがerror_messagesの表示があれば削除してくださいね、ということに…

paginateとkaminari

paginateってなんだ? ページ下部にある123とかってやつ。これを実装するために、kaminariというgemをインストールする。 実装 gem 'kaminari' $ bundle instal これでkaminariを使えるようになった。どう実装するのか。 rails g kaminari:config でkamin…

testを作る際のsetupメソッドとは

setupメソッドとは testを作る際に、 def setup @user = User.new(name:"hoge",nickname:"fuga") end などとしてsetupメソッドを定義することがある。このsetupメソッドは、他のテストが実行される前にかならず実行されるものになっていて、他のテストの中で…

findとfind_byの違い

Userのidが1のデータがあると仮定する。 User.find(1) User.find_by(id: 1) では同じようにUserのidが1のデータを取ってくるが、存在しないUserのidが2のデータを取ってこようとすると、 User.find(2) # => errorが出る。 User.find_by(id: 2) # => nilを返…

blank?メソッド

空文字" "を認識してくれるメソッド。Rubyには搭載されておらず、RailsがRubyっぽいメソッドとして準備してくれているもの。 空文字かどうか判別するのにempty?メソッドもあるが、これは、" "この文字列はfalseを返すため、blank?と挙動が少し異なる。

test assert_selectメソッドについて

testで使うassert_selectメソッドは特定のHTMLタグが存在するかどうかをテストしてくれます。「セレクタ」と呼ばれることもあります。 assert_select "title","Home | Sample App" と書くと、titleタグ内にHome | Sample Appという文字列があるかどうかをチ…

bundle install とupdateのちがい

bundle installはGemfile.lockとGemfileの差分をインストールしてほしいときに使う。 bundle updateはGemfile.lockとGemfileの中身がガラッと変わってしまった場合にGemfile.lockを無視してGemをインストールしてもらうときに使う。

bundle execについて

bundle execとは Gemfile.lockに基づいてgemが動くようになるもの。最新のgemを持ってきました〜とかはない。 bundle exec rails db:migrate のように使う。 参考 https://qiita.com/d0ne1s/items/fa2dafcee02e963fe997

バージョンを指定してRailsを作成

rails newで新しく作ろう バージョンの確認 使いたいRailsのバージョンをインストール 参考 rails newで新しく作ろう rails newで新しくRailsのアプリを作り始める時、Railsのバージョンを指定して作成したい時がある。そういうときは、 % rails _6.0.0_ new…

Rails 画像投稿機能の導入

CarrierWaveとMiniMagickを使って画像を投稿できるようにしていきます。この2つはインストール済みということを前提にして進めていきます。 画像のアップローダーの作成 % rails g uploader image を実行すると、app/uploadesディレクトリにimage_uploader.r…

gem 'carrier_wave'の導入

gem 'carrier_wave'とは ファイルアップロード用のgemです。gemfileに gem 'carrierwave' と記述し、 % bundle install でインストールすることができます。 参考 https://techtechmedia.com/carrierwave-minimagick-image/

gem 'mini_magick'の導入

gem 'mini_magick'とは 画像を加工してくれるgemです。使うためには、gemfileに gem 'mini_magick' と記述し、 % bundle install を実行するとインストールできます。さらに、MiniMagickをしようするためには、ImageMagickというものが必要になるため、これ…

Railsのバージョン指定インストール

Railsのバージョンを指定してインストールをしたいため、調べたことをまとめる。 Railsのバージョン確認 現在のRailsのバージョン確認 指定したバージョンをインストール 参考 Railsのバージョン確認 現在、インストール済みのRailsを調べる。 % gem list ra…

M1macでrbenvを使ってrubyのインストール

% rbenv install 2.6.3 などrubyのバージョンをインストールしたいときにBUILD FAILEDが出てしまってインストールできないことがある。 そんなときはこれ! % RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC rbenv install 2.6.3 なんかわからないけどインストールで…

errorメッセージを個別で出したい

色々と調べながらやってるうちに知らない間にerrorメッセージを出せるようになってしまったが、やったことに自分の頭がついていっていないので、落ち着いてまとめてみる。 エラーメッセージ用のテンプレートの作成 まずはじめに全てのエラーメッセージを配列…

Railsでデータベースのリセットをしよう!

データベースを空にするために、 rails db:reset と rails db:migrate:reset の2種類存在する。この2つについて考えていきます。 rails db:resetとは rails db:migrate:resetとは どちらを使うか 参考 rails db:resetとは rails db:resetは2種類のコマンドを…

はてなブログでMarkdownで目次が作りたい!

ということで、Qiitaとかみてると目次ってかっこいいなと、思うわけですよ。なので、今回は目次について調べて、実際に使ってみようと思います! はてなブログを参考に まず、目次を挿入したい行に[:contents]と記入をする。 [:contents] その下に見出しをつ…

buildメソッドって?

インスタンスを生成するメソッド。モデルの関連付けでも用いられる。 newメソッドと同じ使い方をするが、モデルの関連付けの際には、暗黙のルールとしてbuildメソッドを使う。 buildの記述方法 全部で3パターン。モデルの同士の関連付けで変わってくる。 1. …

form_withって難しい(n回目)

form_withっていろいろな情報があって、何が何やらさっぱりなので、少しまとめて行きたいと思います。たくさん参考にしながらやっていきます。 form_tagとform_for まず、form_withは第一引数にmodel:かurl:を使います。この使い分けは、 <%= form_with url:…

部分テンプレートをrenderするときのcollectionってなに?

部分テンプレートをレンダリングするときに、ローカル変数を渡す時があるけれど、何種類も渡し方があるので、その中に出てくるcollectionについて考えていきます。 前提として、postコントローラー、postモデルが存在し、 def index @posts = Post.all end <…

作成日時を表示しよう!

掲示板の作成日時を制作します。 何も設定を変えずにcreated_atの時間を見ると、UTC(世界標準時)で出てきてしまいます。そのため、いくつか変更や設定をすることがあるので観ていきます。 タイムゾーンの変更 最初にタイムゾーンを日本時間に設定します。 cl…

present?メソッドとは

present?メソッドとは present?とは、真偽判定をしてくれるメソッドの1つで、オブジェクトに値が入っていれば真、入っていなければ偽を返してくれます。 その他のメソッドとの違い。 メソッド メソッドの意味 nil? 変数の値がnilまたは値なしで真 empty? 変…

Post.all.includes(:user).order(created_at: :desc)

includesメソッドとは? このメソッドはモデル同士の関連付けを事前に取得してN+1問題を解決してくれるメソッド。指定された関連付けが最小限のクエリ回数で読み込まれるようになる。 N+1問題って? ループ処理の中で、その都度SQLを発行してしまい、大量のS…

offset(rand(User.count)).first

offsetメソッドとは、特定のレコード位置から情報を取得するメソッド。 モデル.offset(取得開始位置) と書くことで、(取得開始位置)から情報をとってくることができる。 User.limit(5).offset(30) 上のコードは、30件目以降から5件ユーザーの情報をとって…

renderを使って複数回表示したい

Railsを使って、掲示板を作っている。 掲示板の掲示物を部分テンプレートを使って複数回表示させたい。 views/sharedの中に_board.html.erbを作成。これを複数回boards/index.html.erbの中で表示させる。 まずは、一回だけ表示できるかを確認する。 index.ht…

has_manyとbelongs_toの話

userとpostを結びつけたい場合、postはuserに紐付けられて、かつ、userがpostを複数持つ場合、 class User < ApplicationRecord has_many :posts, dependent: :destroy end class Post < ApplicationRecord belongs_to :user end と記入することで、紐付けら…

テーブルのデータをすべて消す

ユーザーのデータをseeds.rbを作って作りすぎてしまった。 rails c コンソールを開いて、 User.destroy_all これでテーブルのデータが全て消える。紐付けてあるデータも消えるので覚えておく。

Railsで日本標準時間にする

config/application.rbファイルのApplicationクラスの中にタイムゾーンの設定を追加する。 class Application < Rails::Application config.time_zone = 'Tokyo' end としてあげればOK!

未ログイン時にログインしてくださいを出す

ログイン状態の場合current_userを使用することができる。(sorceryのおかげ) application_controllerに書き加える。 class ApplicationController < ActionController::Base before_action :login_required private def login_required unless current_user …