Rails

!がつくときとつかないときの違い

!がつくときとつかないときの違い 結論、処理が失敗したときの挙動が違う saveを使う場合 掲示板作成ファームなど、処理が失敗する可能性が想定されて、失敗した場合に何かハンドリングしたい場合 save!を使う場合 削除機能など、処理が必ず成功すると想定さ…

HTMLのdata属性

data属性について 上記のような、ダイアログを表示させるためにdata属性を使用する 導入 <%= link_to 'リンク', ○○_path, data: { confirm: 'ダイアログで表示させるメッセージ' } %>とすると先程の画像のようなダイアログを使用できる

content_for

content_forとは 各ページごとにタイトルを変更したい場合に使用 コンテンツを名前付きのyieldブロックとしてレイアウトに挿入できる ヘルパーメソッドの作成 app/helpers/application_helper.rb def page_title(page_title = '') base_title = 'Ruby on Rai…

ルーティングのネスト

ネストをすると関係性のあるもののid情報が取得できる Rails.application.routes.draw do resources :tweets do resources :comments, only: [:create] end end 上記のルーティングで作成されるURLは/tweets/id/commentsになる このコメントは2番のツイート…

carrierwave

carrierwaveとは、画像アップロード用ライブラリ 導入 gem 'carrierwave' アップローダーの作成 bundle exec rails g uploader BoardImage 生成されたアップローダーに以下記述 class BoardImageUploader < CarrierWave::Uploader::Base def store_dir "uplo…

マイグレーションのロールバック

1つ前のマイグレーションをロールバック bin/rails db:rollback 複数のマイグレーションをロールバック bin/rails db:rollback STEP=3 この場合は最後に行った3つがロールバックされる ロールバックと再マイグレーションを一度に実行 bin/rails db:migrate:r…

データベースのリセット

データベースのリセットには、db:resetとdb:migrate:resetがある db:migrate:resetのほうがすべてをやり直してくれるのでおすすめ 詳しく書くと、db:resetはスキーマファイル ( db/schema.rb ) をもとにDB作成するので、マイグレーションファイルを編集して…

ストロングパラメーター

ストロングパラメーターとは コントローラーでパラメータを送る際に主に利用される仕組み 受け付けたパラメータが、安全かどうか検証して安全ではないデータの登録、更新を防いでくれる params.require(:user).permit(:nickname, :email, :password) 上記の…

formヘルパー

formヘルパーとは Railsの便利なメソッドのうちの一つがformヘルパーで、form_for, form_tag, form_with などがある ポイント action属性 入力したものをどのサーバーに送るか指定したもの input要素 サーバーに送信する値。selectやtextareaがある input要…

日時のフォーマットについて

問題 世界標準で日時が表示される 解決法 タイムゾーンを日本時間に設定 config/application.rb module TimeFormatSandbox class Application < Rails::Application # ... # タイムゾーンを日本時間に設定 config.time_zone = 'Asia/Tokyo' end end 上記の記…

renderメソッド オプション

コレクションオプション 一覧表示をする際などに、eachを使用するところを、コレクションオプションを使うことでパフォーマンスを上げることができる eachを使った場合 コントローラー def index @users = User.all end ビュー <% @users.each do |user| %> <tr> <td></td></tr>…

N+1問題

N+1問題について 何度もSQLが発行されて、パフォーマンスが低下すること N+1について詳しく ownersテーブルとcatsテーブルの2つがあるとする すべてのownersのcats一覧を表示する場合、まずallメソッドですべてのownersを取得する、その後上記のようにview…

シードファイル

シードファイルについて 最低限のデータを投入できるファイル 導入 db/seeds.rbの中に処理を記述 その後、rails db:seedを打ち込み事で、ファイルの内容が実行され初期データを投入できる

アソシエーション

アソシエーションとは どれが誰の投稿なのかを関連付けるもの アソシエーションを利用すると複数のテーブルにまたがるデータ操作もより直感的に利用できる twitterを例にすると、1ユーザー(userテーブル)に対し、複数ツイート(tweetテーブル)が結びつい…

デコレーター

既存のクラスに機能を付け加えたい場合や、既存機能に少しだけ修飾を加えたい場合に使われる モデルの肥大化を解決するために用意されている 導入 gem 'draper' ApplicationDecoratorを生成 rails generate draper:install UserDecoratorを生成 rails genera…

アセットパイプライン

アセットパイプラインはWeb画面上の色塗りを楽にできる機能 sprockets-railsというgemによって提供される機能 具体的には、Webブラウザに画面のデザインを認識させるためにHTMLに紐付くCSSやJavaScript、Imageファイルを記述・作成すること WebブラウザはHTM…

association

association という機能を使うことで関連するデータを自動的に作成できるようになる 以下のモデルがある # app/models/user.rb class User < ApplicationRecord has_many :comments end # app/models/comment.rb class Comment < ApplicationRecord belongs_…

ヘルパーメソッド

viewをシンプルに記述するためにHTMLファイルを生成してくれるメソッド 以下link_toというヘルパーメソッドを使用した場合 #変換前 <%= link_to 'テスト', 'https://startup-technology.com/' %> # HTMLに変換後 <a href='https://startup-technology.com/'>テスト</a> 自分で作ることもできる

Scss

sass-railsというgemが導入することで使用できる scss環境でscss記述→全部書き終わったらコンパイル(scssをcssにする処理)→どこでも読み込めるcss完成する流れ 指定を入れ子にできる div{ color:#fff; a{ color:#000; span{ color:#ccc; } } } 上記のような…

マニフェストファイル

application.css、application.jsのように、どのファイルを読み込むのかを取りまとめたファイル HTMLでは、そのページで必要となる読み込みファイルを ~ 内で読み込んでいる Railsの場合、CSSファイルの読み込みはstylesheet_link_tag、JSファイルの読み込み…

ジェネレーター

Railsにはデフォルトでrails generate(gに省略可能)と言うコマンドがある コマンド別自動生成されるファイル 参考:rails generateで自動生成されるファイルの設定 - Qiita 自動生成したファイルについては、rails destroyコマンドで元に戻せる rails g cont…

パンくずの設定

パンくずとは ユーザーがWEBサイト内でどの位置にいるか視覚的にわかりやすくしたもの gem 'gretel' Gemfileに上記を追加後、bundle install その後にrails generate gretel:installというコマンド追加 config/breadcrumb.rbというファイルが作成されるので…

slim

slimとは viewの構文を減らし、必要なものだけにしたシンプルなテンプレート言語 gem 'slim-rails' 上記をGemfileに追記して、bundle install後にviewファイルの拡張子をhtml.slimにすれば使用可能 slim記法 each記法 <% @articles.each do |a| %> <p><%= a.tit</p>…

コミットメッセージの書き方

コミットメッセージの例 prefix: 修正内容 prefix fix バグ修正 add 新規機能・新規ファイル追加 update バグではない機能修正 change 仕様変更による機能修正 remove/delete ファイル削除/コードの一部を取り除く rename ファイル名の変更 move ファイル移…

i18nによる日本語対応

i18nとは Railsアプリを多言語対応させるgem フラッシュメッセージの多言語化などにも使用できる デフォルトの言語を日本語化する config/application.rbに以下を指定 config.i18n.default_locale = :ja 日本語のロケールファイル(辞書ファイル)はconfig/l…

form_withについて

form_withについて form_withは今まで場合によって使い分けをしていたform_forとform_tagを統合したもの モデルに紐づくフォームを作成=form_for モデルに紐付かないフォームを作成=form_tag HTTPメソッドとアクションを判別してくれる form_withでurlとmod…